直接上代码:
class Palindrome {
public:
int getLongestPalindrome(string A, int n) {
// write code here
int rs=1;
string str="#";
for(int i=0;i<n;i++){
str+=A[i];
str+="#";
}
for(int j=1;j<str.size();j++)
{
int temp=1,start=j-1,end=j+1;
while(end<=str.size()&&start>=0){
if(str[end]==str[start]){
end++;
start--;
temp++;
}
else
break;
}
if(temp>rs)
rs=temp;
}
return rs-1;
}
};
以上是我实现的,当然对于这一题有专门的算法来解决,即:Manacher算法,其原理我感觉有点复杂,这里先提出来,以备以后温习多看几遍。(其原理和源代码这里不再给出,百度一大片)