最长回文子串(动态规划)c++

题目描述:给你一个字符串 s,找到 s 中最长的回文子串。

递推式:

class Solution {
public:
    string longestPalindrome(string s) {
        int len=s.size();
        if(len<2)
            return s;
        bool dp[len][len];//布尔型,dp[i][j]表示从i到j是否构成回文
       int max_count=1;//最大字串的长度
       int start=0;//最长字串的起始位置
        for(int j=0;j<len;j++)
        {
            for(int i=0;i<j;i++)
            {
                if(s[i]!=s[j])
                    dp[i][j]=false;
                else if((j-i)<3)//(j-1)-(i+1)+1<2表示dp[i][j]的最大字串长度为1
                    dp[i][j]=true;
                else
                {
                    dp[i][j]=dp[i+1][j-1];
                }
                if((j-i+1)>max_count&&dp[i][j])
                 {
                    max_count=j-i+1;
                    start=i;
                 }   
            
            }
  
        }     
        return s.substr(start,max_count);//截取字符串
    }
};

 

全部评论

相关推荐

风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务