给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
遍历字符串每个节点,分俩种情况讨论
一种是一开始相邻的节点就相同,另外一种是一开始要相隔一个节点才相同
最后记录下标进行比较后返回
class Solution {
public:
string longestPalindrome(string s) {
int len = s.size();
int flagHead=0,flagTail=1,head,tail;
for(int z=1;z<len;z++){
head = z-1;
tail = z;
if(s[head]==s[tail])
{
while (head>0 && s[head]==s[head-1]) head--;
while (tail<len-1 && s[tail]==s[tail+1]) tail++;
}
else if(z<len-1) tail += 1;
if(s[head]!=s[tail]) continue;
while (head>0 && tail <len-1 && s[head-1]==s[tail+1]) head--,tail++;
if(tail-head+1>flagTail-flagHead) flagTail=tail+1,flagHead=head;
}
return s.assign(s.begin()+flagHead,s.begin()+flagTail);
}
};