leetcode 516. Longest Palindromic Subsequence 最长回文子序列 + DP动态规划
2017-12-16 15:10
429 查看
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动态规划
建议和这一道题一起学习leetcode 5. Longest Palindromic Substring 最长回文子串的查找 + 按照length做DP 和leetcode 730. Count Different Palindromic Subsequences 动态规划DP,leetcode 647. Palindromic Substrings 回文子串的数量
dp[i][j]表示字符串i~j下标所构成的子串中最长回文子串的长度~最后我们需要返回的是dp[0][len-1]的值
代码如下:
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动态规划
建议和这一道题一起学习leetcode 5. Longest Palindromic Substring 最长回文子串的查找 + 按照length做DP 和leetcode 730. Count Different Palindromic Subsequences 动态规划DP,leetcode 647. Palindromic Substrings 回文子串的数量
dp[i][j]表示字符串i~j下标所构成的子串中最长回文子串的长度~最后我们需要返回的是dp[0][len-1]的值
代码如下:
#include <iostream> #include <vector> #include <map> #include <set> #include <queue> #include <stack> #include <string> #include <climits> #include <algorithm> #include <sstream> #include <functional> #include <bitset> #include <numeric> #include <cmath> using namespace std; class Solution { public: int longestPalindromeSubseq(string s) { vector<vector<int>> dp(s.length(), vector<int>(s.length(), 0)); for (int i = 0; i < s.length(); i++) dp[i][i] = 1; for (int len = 1; len <= s.length(); len++) { for (int i = 0; i + len < s.length(); i++) { int j = i + len; 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][s.length() - 1]; } };
相关文章推荐
- LeetCode 5 Longest Palindromic Substring manacher算法,最长回文子序列,string.substr(start,len) 难度:2
- LeetCode_5_LongestPalindromicSubstring(最长回文子序列)
- [LeetCode] 516. Longest Palindromic Subsequence 最长回文子序列
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
- Leetcode--Longest Palindromic Substring(最长回文子序列)
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
- LeetCode 516. Longest Palindromic Subsequence--最长回文子序列长度
- leetcode-5 Longest Palindromic Substring(回文子序列)
- [LeetCode] Longest Uncommon Subsequence I 最长非共同子序列之一
- UVa 11404 - Palindromic Subsequence (最长回文子序列 DP)
- leetcode--最长非重复子序列--O(n)--基于队列
- 最长回文子序列问题
- 最长回文子序列
- LeetCode 298. Binary Tree Longest Consecutive Sequence(二叉树最长连续序列)
- [LeetCode] 298. Binary Tree Longest Consecutive Sequence 二叉树最长连续序列
- 求LPS——最长回文子序列
- LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)
- 每天一道LeetCode-----计算两个序列最长的公共子序列长度
- leetcode 522. Longest Uncommon Subsequence II 最长非公共子序列 + 暴力寻找子串
- 最长公共子串、最长公共子序列、最长回文子串、最长回文子序列、回文子串个数