题目描述:
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:输入:s = "cbbd"
输出:"bb"
当回文串为奇数时, 例如: abcba 这个回文串,当i = 2时,l 跟 r两个游标分别向两边扩展,直到l = -1 , r = 5时循环结束. 生成以l + 1到r - l - 1的子串
当回文串为偶数时,例如: abba 这个回文串,当i = 1时,l 跟 r两个游标分别向两边扩展,直到l = -1 , r = 4时循环结束,生成以l + 1到r - l - 1的子串
class Solution {
public:
string longestPalindrome(string s) {
string ans = "";
for(int i = 0;i < s.length();i++){
//回文串奇数
int l = i - 1,r = i + 1;
while(l >= 0 && r < s.length() && s[l] == s[r])
l --,r++;
if(ans.length() < r - l - 1)
ans = s.substr(l + 1,r - l - 1);
//回文串偶数
l = i,r = i + 1;
while(l >= 0 && r < s.length() && s[l] == s[r])
l --,r++;
if(ans.length() < r - l - 1)
ans = s.substr(l + 1,r - l - 1);
}
return ans;
}
};
substr(子串开始位置,子串长度);