给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
判断回文,要考虑是奇数还是偶数
string longestPalindrome(string s) {
int n = s.size();
string ret = "";
int left = 0;
int right = 0;
for(int i=0; i<n; i++)//奇数情况下
{
left = i;
right = i;
while(left>0 && right<n-1 && s[left-1] == s[right+1])
{
left--;
right++;
}
if(right-left+1 >= ret.size())
{
ret = s.substr(left,right-left+1);
}
}
for(int i=0; i<n; i++)//偶数情况下
{
if(s[i] == s[i+1])
{
left = i;
right = i+1;
while(left>0 && right<n-1 && s[left-1]==s[right+1])
{
left--;
right++;
}
}
if(right-left+1 >= ret.size())
{
ret = s.substr(left,right-left+1);
}
}
return ret;
}