leetcode-5:最长回文子串
链接
最长回文子串
分析
我们枚举回文子串的中心,然后搜索向两边的最大延申长度,同时维护答案.
code
class Solution {
public:
string longestPalindrome(string s) {
string res;
int n = s.size();
for (int i = 0; i < n; i ++) {
// 枚举长度为奇数的回文子串
int l = i - 1, r = i + 1;
while (l >= 0 and r < n and s[l] == s[r]) l --, r ++; // 寻找以当前点为中心的最长回文子串
// 维护res的值
if (r - l - 1 > res.size()) res = s.substr(l + 1, r - l - 1);
// 枚举长度为偶数的回文子串
l = i, r = i + 1;
while(l >= 0 and r < n and s[l] == s[r]) l --, r ++; // 寻找以当前点为中心的最长回文子串
// 维护res的值
if (r - l - 1 > res.size()) res = s.substr(l + 1, r - l - 1);
}
return res;
}
};