class Solution { public: int getLongestPalindrome(string A, int n) { // write code here //方法中心扩展法,这是从评论区大佬那学到的,又学到了(苦笑) int res=0; for(int i=0;i<n;i++) { //每一个字符都可以作为中心向两边扩展,但由于字符串长度的奇偶性不同时以一个字符和两个字符扩展的结果会不一样 //所以对于每个字符我们都分两种情况讨论,然后取最大值
int len=lenth(A,i,i)>lenth(A,i,i+1)?lenth(A,i,i):lenth(A,i,i+1);
res=res>len?res:len;
}
return res;
}
int lenth(string str,int left,int right)
{
while(left>=0&&right<str.size()&&str[left]==str[right])
{
left--;
right++;
}
return right-left+1-2;//为什么要减去2,因为最后循环结束是因为left或者right其中一个超了所以此时移动的两个位置不能算
}
};