Fork me on GitHub

P_19最长回文子串

 1 //最长回文子串 
 2 #include<iostream>
 3 #include<string.h>
 4 
 5 using namespace std;
 6 
 7 int LongestPalinderom(char *s, int n)
 8 {
 9     int i, j, max, c;
10     if (s == 0 || n < 0)
11     {
12         return 0;
13     }
14     max = 0;
15     for (i = 0;i < n;++i)
16     {
17         for (j = 0;(i - j >= 0) && (i + j < n);++j)
18         {
19             if (s[i - j] != s[i + j])
20             {
21                 break;
22             }
23             c = j * 2 + 1;//对称字符串为奇数
24         }
25         if (c > max)
26         {
27             max = c;
28         }
29         for (j = 0;(i - j >= 0) && (i + j + 1 < n);++j)
30         {
31             if (s[i - j] != s[i + j + 1])
32             {
33                 break;
34             }
35             c = j * 2 + 2;//对称字符串为偶数
36         }
37         if (c > max)
38         {
39             max = c;
40         }
41     }
42     return max;
43 }
44 
45 int main()
46 {
47     char a[64];
48     int n;
49 
50     cin >> a;
51     n=strlen(a); 
52     cout << LongestPalinderom(a, n) << endl;
53     return 0;    
54 }

 

posted @ 2018-04-10 15:30  风中等待  阅读(91)  评论(0编辑  收藏  举报