LeetCode最长回文字符串

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39485740/article/details/101516105

主要运用动态规划的算法

class Solution {
public:
    string longestPalindrome(string s) {
        int len = s.length(); //获取s的长度
        bool dp[1001][1001] = {}; //判断是不是回文
        int max = 1,index = 0; //记录起点和长度
        for(int i=0; i<len; i++)
            dp[i][i] = 1; //初始话数组
        
        for(int i=0; i<len; i++)
        {
            for(int j=0; j<i; j++)
            {
                if(i-j < 2) dp[j][i] = (s[i] == s[j]);
                else if(s[i] == s[j] && dp[j+1][i-1] == 1)  dp[j][i] = 1;
                if(dp[j][i] == 1)
                {
                    int k = i-j+1;
                    if(max < k)
                    {
                        max = k;
                        index = j;
                    }
                }
            }
        }
        return s.substr(index,max);
    }
};

猜你喜欢

转载自blog.csdn.net/qq_39485740/article/details/101516105