解题思路:
(1)中心扩展法
#include<iostream>
#include<cmath>
using namespace std;
pair<int,int> helper(string &s,int left,int right) {
while(left>=0 && right<s.length() && s[left]==s[right]) {
left--;
right++;
}
return pair(left+1,right-1);
}
int longestPalindrome(string s) {
int start=0,end=0;
for(int i=0;i<s.length();i++) {
auto [left1,right1]=helper(s,i,i);
auto [left2,right2]=helper(s,i,i+1);
if(right1-left1>end-start) {
start=left1;
end=right1;
}
if(right2-left2>end-start) {
start=left2;
end=right2;
}
}
return end-start+1;
}
int main() {
string s="";
while(cin>>s) {
cout<<longestPalindrome(s)<<endl;
}
return 0;
}