此教程使用C++版本编写代码,如需其他版本,请自行修改,并在力扣网站中测试!
题目描述
给你一个字符串 s,找到 s 中最长的回文子串。
示例1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成C++题目源码:
class Solution {
public:
string longestPalindrome(string s)
{
if(s.length()==0)
{
return "";
}
int size=s.length();
int left=0;
int right=0;
int len=1;
int maxPos=0;
int maxLen=0;
for(int i=0;i<size;i++)
{
left=i-1;
right=i+1;
//左边
while(left>=0&&s[left]==s[i])
{
len++;
left--;
}
//右边
while(right<size&&s[right]==s[i])
{
len++;
right++;
}
//左边和右边对称
while(left>=0&&right<size&&s[left]==s[right])
{
len+=2;
left--;
right++;
}
if(len>maxLen)
{
maxLen=len;
maxPos=left;
}
len=1;
}
return s.substr(maxPos+1,maxLen);
}
};
全部0条评论
快来发表一下你的评论吧 !