给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
code
class Solution {
public:
int window(int x,int y,string & s){
int left = x;
int right = y;
while(left>=0 && right<s.length()&&s[left]==s[right]){
left--;
right++;
}
return right - left - 1 ;
}
string longestPalindrome(string s) {
if(s.length()<=1)
return s;
int start=0, end=0;
for(int i=0;i<s.length();i++){
int len1 = window(i,i,s); // ababa
int len2 = window(i,i+1,s); // abba
int len = len1>len2?len1:len2;
if(len>end - start){
start = i - (len-1)/2;
end = i+len/2;
}
}
return s.substr(start, (end - start)+1);
}
};