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 }
转载请说明出处!