题目
分析
题目的要求是求出最大的回文子串,那么可以通过枚举回文子串中间的值 i ,不断往两边扩散。遍历 i 即可 。
要注意的是 回文串的大小是奇数还是偶数 情况是不一样的。 如: abcba abccba
于是枚举 i 时,既要枚举奇数情况求出最大子串 也要枚举偶数情况,取两者中的大的。
题解
class Solution {
public:
string longestPalindrome(string s) {
int size = s.size();
int x,y,count=0;
string substr="";
for(int i=0; i<size; i++){
for(int j=0; j<=i && i+j<size; j++){
if(s[i-j]!=s[i+j])
break;
else{
int length = 2*j+1;
if(length>count){
count=length;
x=i-j;
y=i+j;
}
}
}
for(int j=0; j<=i && i+j+1<size; j++){
if(s[i-j]!=s[i+j+1])
break;
else{
int length = 2*j+2;
if(length>count){
count=length;
x=i-j;
y=i+j+1;
}
}
}
}
for(int i=x; i<=y; i++)
substr+=s[i];
return substr;
}
};