中心扩展算法
观察到每个回文字符串的特质是的对称性,如aa,aba;即有两种情况,然后假设每个字符都是回文的就向两端扩展
class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
string out;
out+=s[0];
for(int i=1;i<n;i++){
int left=i-1,right=i+1;
while(left>=0&&right<n&&s[left]==s[right]){
// cout<<left<<" "<<right<<endl;
left--;
right++;
}
if(out.size()<right-left-1)out=s.substr(left+1,right-left-1);
int left1=i-1,right1=i;
while(left1>=0&&right1<n&&s[left1]==s[right1]){
// cout<<left1<<" "<<right1<<endl;
left1--;
right1++;
}
if(out.size()<right1-left1-1)out=s.substr(left1+1,right1-left1-1);
}
return out;
}
};