2021-06-01. Longest Palindromic Substring Dynamic Programming

class Solution {
public:
    string longestPalindrome(string s) {
        vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
        int res=0;
        int l=0;
        int r=0;
        for(int i=s.size()-1;i>=0;i--){
            for(int j=i;j<s.size();j++){
                if(s[i]==s[j]){
                    if(j-i<=2){
                        dp[i][j]=1;
                    }
                    else if(dp[i+1][j-1]){
                        dp[i][j]=1;
                    }
                }
                if(dp[i][j]&&j-i+1>res){
                    res=j-i+1;
                    r=j;
                    l=i;
                }
            }
        }
        return s.substr(l,r-l+1);
    }
};
//https://leetcode-cn.com/problems/longest-palindromic-substring/solution/5-zui-chang-hui-wen-zi-chuan-dong-tai-gu-3vfv/

 Reference link:

"Code Caprice" 5. The longest palindrome substring [Dynamic Programming] [Midpoint Diffusion] Detailed explanation! - Longest Palindromic Substring - LeetCode (leetcode-cn.com)

When s[i]==s[j], if ji<=2, then dp[i][j]=1 If dp[i+1][j-1]=1, then the same dp[i] [j]=1 

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326283874&siteId=291194637