原题链接:5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)
一、思路
首先,将回文字符串分为两种,总长为奇数或者偶数来进行处理。从第一个字符开始向后枚举,然后以枚举点为中心,向两边延伸至边界(左边界是0,右边界是s.size() 。每次将结果与上一个结果进行比较。遍历完成后获得答案。时间复杂度:o(n^2)
二、补充知识点
字符串处理
三、代码
class Solution {
public:
string longestPalindrome(string s) {
string res;
for(int i = 0; i < s.size(); i ++){
int l = i -1, r = i + 1;
while(l >= 0 && r < s.size() && s[l] == s[r]) l --, r ++;
if(res.size() < r - l - 1) 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(res.size() < r - l - 1) res = s.substr(l + 1, r - l - 1);
}
return res;
}
};