leetcode 5. 最长回文子串(Longest Palindromic Substring)

题目描述:

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

解法:

class Solution {
public:
    string longestPalindrome(string s) {
        int sz = s.size();
        vector<vector<bool>> lst(sz, vector<bool>(sz, false));
        string res = "";
        int res_len = -1;
        for(int step = 0; step < sz; step++){
            for(int i = 0; i < sz - step; i++){
                if(s[i] == s[i+step] && (step <= 1 || lst[i+1][i+step-1]) == true){
                    lst[i][i+step] = true;
                    if(res_len < step){
                        res = s.substr(i, step+1);
                        res_len = step;
                    }
                }
            }
        }
        return res;
    }
};
posted @ 2019-06-18 14:06  zhanzq1  阅读(82)  评论(0)    收藏  举报