zoukankan      html  css  js  c++  java
  • LeetCode 516. Longest Palindromic Subsequence

    Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000.

    Example 1:

    Input:
    “bbbab”
    Output:
    4
    One possible longest palindromic subsequence is “bbbb”.
    

    Example 2:

    Input:
    “cbbd”
    Output:
    2
    One possible longest palindromic subsequence is “bb”.
    

    分析

    按长度来更新dp数组,
    if(s[j]==s[j+len-1])
    dp[j][j+len-1]=dp[j+1][j+len-2]+2;
    else
    dp[j][j+len-1]=max(dp[j+1][j+len-1],dp[j][j+len-2]);

    class Solution {
    public:
        int longestPalindromeSubseq(string s) {
            vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
            for(int i=0;i<s.size();i++)
                dp[i][i]=1;
            for(int len=2;len<=s.size();len++)
                for(int j=0;j<=s.size()-len;j++)
                    if(s[j]==s[j+len-1])
                       dp[j][j+len-1]=dp[j+1][j+len-2]+2;
                    else
                       dp[j][j+len-1]=max(dp[j+1][j+len-1],dp[j][j+len-2]);
           return dp[0][s.size()-1];
        }
    };
    
  • 相关阅读:
    Contains Duplicate III
    Contains Duplicate
    bitmap
    机器人的运动范围
    矩阵中的路径
    不要62
    牛顿迭代法求方程的根
    统计C语言合法字符
    迭代法求平方根
    欧几里德算法(求两个正整数的最大公约数)
  • 原文地址:https://www.cnblogs.com/A-Little-Nut/p/10073845.html
Copyright © 2011-2022 走看看