Longest Palindromic Subsequence
来源:互联网 发布:javascript 模块化 编辑:程序博客网 时间:2024/05/21 17:31
题目:
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:
4One possible longest palindromic subsequence is "bbbb".
Example 2:
Input:
"cbbd"Output:
2One possible longest palindromic subsequence is "bb".
题目意思:
给定一个字符串s,返回该字符串的最长回文子序列。s的最大长度不超过1000.
解题思路:
使用动态规划解决,先把它划分成子问题,通过分析,子问题应该是:任意一个该字符串的子串包含的回文串的长度,那么对于这个字符串的子串,我们可以用它在原字符串中的起始位置和结束位置来表示。因此,可以用一个二维数组来对子问题进行表示。longest数组记录字符串[i,j]范围的最长回文序列。
动态转移方程为longest[l][r] = longest[l+1][r-1] + 2 if s[l] == s[r] else longest[l][r] = max(longest[l+1][r], longest[l][r-1]).
算法复杂度:时间复杂度为O(n^2),空间复杂度为O(n^2)
代码如下:
class Solution {
public:
int longestPalindromeSubseq(string s) {
if (s.empty())
return 0;
vector<vector<int>> longest(s.size(), vector<int>(s.size()));
for (int len = 1; len <= s.size(); ++len)
for (int l = 0; l + len <= s.size(); ++l) {
int r = l + len - 1;
if (l == r)
longest[l][r] = 1;
else if (s[l] == s[r])
longest[l][r] = longest[l+1][r-1] + 2;
else
longest[l][r] = max(longest[l+1][r], longest[l][r-1]);
}
return longest[0][s.size() - 1];
}
};
- Longest Palindromic Subsequence
- PIQ07: Longest Palindromic Subsequence
- leetcode_middle_42_516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516 Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Lettcode_516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- leetcod_516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- leetcode516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- 【516】 Longest Palindromic Subsequence
- 一句话理解Vue核心内容
- 解决nginx如何存储HTTP客户端信息的问题
- java 哈希表
- 1028: 求函数值
- java常量池细节
- Longest Palindromic Subsequence
- Webpack学习心得
- bash之字符串处理
- C++编码规则----布局
- cc1plus: all warnings being treated as errors
- Effective java笔记-第九章-异常
- HDU 2074 叠筐(基础字符串处理)
- 欢迎使用CSDN-markdown编辑器
- 页表 段表