给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
题解:
class Solution {
public:
string longestPalindrome(string s) {
int sub=0;//记录最长回文串的起始位置
int maxstr=0;//记录最长回文串的长度
for(int i=0;i<s.size();i++)
{
//以i下标的字符为回文串的中心值,应对场景"babad"
int left=i-1,right=i+1;
while(left>=0&&right<s.size()&&s[left]==s[right])
{
left--;
right++;
}
if(maxstr<right-left-1)
{
maxstr=right-left-1;
sub=left+1;
}
//以i和i-1之间的空隙为回文串的中心值,应对场景"cbbd"
left=i-1;
right=i;
while(left>=0&&right<s.size()&&s[left]==s[right])
{
left--;
right++;
}
if(maxstr<right-left-1)
{
maxstr=right-left-1;
sub=left+1;
}
}
return s.substr(sub,maxstr);
}
};