LC 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".

Runtime: 128 ms, faster than 59.09% of C++ online submissions for Longest Palindromic Subsequence.

Memory Usage: 90.5 MB, less than 0.79% of C++ online submissions for Longest Palindromic Subsequence.

class Solution {
public:
  int longestPalindromeSubseq(string s) {
    int N = s.size();
    vector<vector<int>> dp(N, vector<int>(N,0));
    for(int i=0; i<N; i++) {
      dp[i][i] = 1;
    }
    for(int gap=1; gap<s.size(); gap++) {
      for(int i=0; i<N; i++) {
        int j = i+gap;
        if(i+gap >= N) continue;
        if(s[i] == s[j]) {
          dp[i][j] = dp[i+1][j-1]+2;
        } else {
          dp[i][j] = max(dp[i+1][j],dp[i][j-1]);
        }
      }
    }
    return dp[0][N-1];
  }
};

原文地址:https://www.cnblogs.com/ethanhong/p/10361246.html

时间: 2024-08-06 23:35:59

LC 516. Longest Palindromic Subsequence的相关文章

LeetCode 516. Longest Palindromic Subsequence

516. Longest Palindromic Subsequence Add to List Description Submission Solutions Total Accepted: 2159 Total Submissions: 5216 Difficulty: Medium Contributors: Stomach_ache Given a string s, find the longest palindromic subsequence's length in s. You

516. Longest Palindromic Subsequence

本周课堂上学习的是动态规划,因此在LeetCode上找到相应的题进行练习. 题目: Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000. (给定一个字符串S,找到它的最长回文子序列长度) 示例: Example 1:Input  :"bbbab" Output:4 (One possibl

516 Longest Palindromic Subsequence 最长回文子序列

给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 详见:https://leetcode.com/problems/longest-palindromic-subsequence/description/ C++: class Solution { public: int longestPalindromeSubseq(string s) { int n = s.size(); vector<vector<int>> dp(n, vector<in

Longest Palindromic Substring &amp; Longest Palindromic Subsequence

5. Longest Palindromic Substring 题目链接:https://leetcode.com/problems/longest-palindromic-substring/#/description 题目大意:给定一个字符串s,返回该字符串的最长回文子串.s的最大长度不超过1000. 思路:对于每个子串的中心(可以是一个字符,或者是两个字符的间隙,比如串abc,中心可以是a,b,c,或者是ab的间隙,bc的间隙)往两边同时进行扫描,直到不是回文串为止.假设字符串的长度为n

Longest Palindromic Subsequence

方法:与substring的不同是这里不需要子串连续 class Solution { public: int longestPalindromeSubseq(string s) { vector<vector<int>> f(s.size(), vector<int>(s.size(), 0)); for(int i=s.size()-1; i>=0; --i) { f[i][i] = 1; for(int j=i+1; j<s.size(); ++j)

LC 873. Length of Longest Fibonacci Subsequence

A sequence X_1, X_2, ..., X_n is fibonacci-like if: n >= 3 X_i + X_{i+1} = X_{i+2} for all i + 2 <= n Given a strictly increasing array A of positive integers forming a sequence, find the length of the longest fibonacci-like subsequence of A.  If on

[译]最长回文子串(Longest Palindromic Substring) Part II

[译+改]最长回文子串(Longest Palindromic Substring) Part II 问题:给定字符串S,求S中的最长回文子串. 在上一篇,我们给出了4种算法,其中包括一个O(N2)时间O(1)空间的算法(中心检测法),已经很不错了.本篇将讨论一个O(N)时间O(N)空间的算法,即著名的Manacher算法,并详细说明其时间复杂度为何是O(N). 提示 +BIT祝威+悄悄在此留下版了个权的信息说: 先想想有什么办法能改进中心检测法. 考虑一下最坏的情况.★ 最坏的情况就是各个回文

poj 2533 Longest Ordered Subsequence(dp)

Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36159   Accepted: 15882 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ...

POJ 2533 Longest Ordered Subsequence(LIS模版题)

Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 47465   Accepted: 21120 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ...