5. 最长回文子串

  1. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:

输入:s = “cbbd”
输出:“bb”

class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size();
        vector<vector<bool>> dp(n, vector<bool>(n, false));
        int start = 0, maxLen = 1;

        for(int i = 0; i < n; i++) {
            dp[i][i] = true;
            for(int j = i - 1; j >= 0; j--) {
                if(s[i] == s[j] && (i-j <= 1 || dp[j+1][i-1])) {
                    dp[j][i] = true;
                    if(i-j+1 > maxLen) {
                        maxLen = i - j + 1;
                        start = j;
                    }
                }
            }
        }
        return s.substr(start, maxLen);
    }
};

你可能感兴趣的:(leetcode算法刷题记录,leetcode,算法,职场和发展)