解题思路:
(1)中心扩展法,因为回文串的长度可能是偶数或者奇数
(2)对每个位置进行长度为1和2分别进行扩展,求得最长的长度
class Solution {
public:
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);
}
string 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 s.substr(start,end-start+1);
}
};