LeetCode 5. 最长回文子串

链接:https://leetcode-cn.com/problems/longest-palindromic-substring

中心扩展:枚举回文子串的中点,从中间向两边扩展,直到左右两边的字符不相等为止,记录最长的回文子串即可。

注意:区分长度为奇数的回文串和长度为偶数的回文串。

时间复杂度为 O(n^2)

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(r - l - 1 > ans.length())    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(r - l - 1 > ans.length())    ans = s.substr(l + 1, r - l - 1);
        }
        return ans;
    }
};

你可能感兴趣的:(LeetCode)