力扣刷题记录5.1-----5. 最长回文子串

目录

  • 一、题目
  • 二、代码
  • 三、运行结果


一、题目

力扣刷题记录5.1-----5. 最长回文子串_第1张图片

二、代码

//二维
//  i  j
//相同     1
//相差为1  看是否相等
//相差大于等于2  相等之后 看i+1 j-1
class Solution 
{
public:
    string longestPalindrome(string s) 
    {
        int i,j;
        vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
        string return_string;  
        int max_length=0;
        for(i=s.size()-1;i>=0;i--)
        {
            for(j=i;j<=s.size()-1;j++)
            {
                if(i==j)
                { 
                   dp[i][j]=1;
                   if(1>max_length) 
                   {
                       max_length=1;
                       return_string.clear();
                       return_string=s[i];
                   }
                } 
                else if(abs(i-j)==1)
                {
                    if(s[i]==s[j]) 
                    {
                        dp[i][j]=1;
                        if(j-i+1>max_length)
                        {
                            max_length=j-i+1;
                            return_string.clear();
                            return_string=s.substr(i,j-i+1);
                        }
                    }
                }
                else 
                {
                    if(s[i]==s[j]) 
                    {
                        dp[i][j]=dp[i+1][j-1];
                        if(dp[i][j]==1)
                        {
                            if(j-i+1>max_length)
                            {
                                max_length=j-i+1;
                                return_string.clear();
                                return_string=s.substr(i,j-i+1);
                            }
                        }

                    }
                }
            }
        }

        std::cout<<"return_string    "<<return_string<<std::endl;
        return return_string;
    }
};

三、运行结果

力扣刷题记录5.1-----5. 最长回文子串_第2张图片

你可能感兴趣的:(leetcode,算法,动态规划)