码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode——动态规划

时间:2019-12-05 01:04:49      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:==   nbsp   long   ++   highlight   ref   ret   com   problems   

立志要熟练动态规划,加油!

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

    思路:设dp[l][r]表示s[l……r]是否回文,枚举右边界r,然后从0枚举l一直到r,dp[r][l] = s[r]==s[l] && (r-1-l-1+1<=1 || dp[l+1][r-1]),意思是当s[r]和s[l]相等时,则需要s[l+1~r-1]也回文,而如果l+1~r-1这一段长度小于等于1,那么肯定回文,否则看dp[l+1][r-1]是否为true即可,因为dp[l+1][r-1]是已经得到的。

    c++:

    class Solution {
    public:
        string longestPalindrome(string s) {
            int len=s.length(),dp[1005][1005];
            if(len<=1)
                return s;
            for(int i=0;i<len;i++)
            {
                for(int j=0;j<len;j++)
                    dp[i][j]=0;
            }
            string ans=s.substr(0,1);
            int mx=1;
            for(int i=1;i<len;i++)
            {
                for(int j=0;j<i;j++)
                {
                    if(s[i]==s[j]&&(i-j-2+1<=1||dp[j+1][i-1]))
                    {
                        dp[j][i]=1;
                        if(i-j+1>mx)
                        {
                            ans=s.substr(j,i-j+1);
                            mx=i-j+1;
                       //     cout<<ans<<endl;
                        }
                    }
                }
            }
            return ans;
        }
    };
    

      

leetcode——动态规划

标签:==   nbsp   long   ++   highlight   ref   ret   com   problems   

原文地址:https://www.cnblogs.com/mcq1999/p/11986547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!