0
点赞
收藏
分享

微信扫一扫

leetcode5,最长回文子串

三千筱夜 2022-03-21 阅读 54
java后端

5. 最长回文子串

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

解析

code

class Solution {
public:
    string longestPalindrome(string s) {
        int n=s.size();
        if(n<2)
            return s;
        vector<vector<int>> f(n,vector<int>(n,0));
        int maxlen=1;
        int begin=0;
        for(int i=0;i<n;i++){
            f[i][i]=true;
        }

    // 枚举长度
        for(int L=2;L<=n;L++){
            // 枚举回文开头
            for(int i=0;i<n;i++){
                //回文结尾
                int j=L+i-1;
                if(j>=n)
                    break;
                if(s[i]!=s[j])
                    f[i][j]=false;
                else{
                    if(j-i<3)
                        f[i][j]=true;
                    else
                        f[i][j]=f[i+1][j-1];
                }

                if(f[i][j]&&j-i+1>maxlen){
                    maxlen=j-i+1;
                    begin=i;
                }
            }
        }

        return s.substr(begin,maxlen);
    }
};
举报

相关推荐

0 条评论