67,633
社区成员
发帖
与我相关
我的任务
分享Difficulty: 给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
示例 3:
输入:s = "a"
输出:"a"
示例 4:
输入:s = "ac"
输出:"a"
提示:
1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成Language: C++
string longestPalindrome(string s) {
string res; //临时存储
int l, r; //左右边界
for(int i = 0; i < s.size(); i++){
l = i - 1, r = i + 1; //长度为偶数时候
while(l >= 0 && r < s.size() && s[l] == s[r]) l--, r++;//扩张区间
if(r - l - 1 > res.size()) res = s.substr(l + 1, (r - l - 1)); //更新答案
l = i, r = i + 1; //长度为奇数时候
while(l >= 0 && r < s.size() && s[l] == s[r]) l--, r++; //扩张区间
if(r - l - 1 > res.size()) res = s.substr(l + 1, (r - l - 1));//更新答案
}
return res;返回答案
}