扩散法,需要考虑长度为偶数和奇数的情况
int getLongestPalindrome(string A, int n) {
// write code here
if (n <=1)return A.length();
int left = 0, right = 0, longest = 1;
//以每个字符为中心开始扩散。
for (int i = 0; i < n; i++)
{
left = right = i;
// 确保不越界
while (left >= 0 && right < n) {
//判断左右字符是否相等。
if (A[left] == A[right])
{
longest = max(longest, right - left + 1);
left--;
right++;
}
else break;
}
left = i;
right = i + 1;
// 确保不越界
while (left >= 0 && right < n) {
//判断左右字符是否相等。
if (A[left] == A[right])
{
longest = max(longest, right - left + 1);
left--;
right++;
}
else break;
}
}
return longest;
}