暴力法:枚举中心位置
int LongestPalindrome(const char *s, int n)
{
if(s == NULL || n < 1) return -1;
int i, j, k, max = 0;
for(int i = 0; i < n; i++)
{
//回文子串为奇数的情况
for(int j = 0; (i - j >= 0) && (i + j < n); j++)
if(s[i-j] != s[i+j]) break;
j--;
if(j * 2 + 1 > max) max = j * 2 + 1;
//回文子串为偶数的情况
for(int k = 0; (i - k >= 0) && (i + k + 1 < n); k++)
if(s[i-k] != s[i+k+1]) break;
k--;
if(k * 2 + 2 > max) max = k * 2 + 2;
}
return max;
}