【LeetCode】516. Longest Palindromic Subsequence最长回文子序列(非连续)
来源:互联网 发布:阿里云降价 编辑:程序博客网 时间:2024/06/03 14:10
Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000.
Input: “bbbab”
Output: 4
一种可能的最长子序列为”bbbb”.
Input: “cbbd”
Output: 2
一种可能的最长子序列为”bb”.
动态规划。
dp[i][j]:表示子串s[i…j]的最长回文子序列的长度,i ≤ j,i, j = 0 … n-1
答案:dp[0][n-1]
初始化:
dp[i][i] == 1
状态转移方程:
若s[i] == s[j],dp[i][j] = 2 + dp[i+1][j-1],要考虑i+1=j的情况
若s[i] != s[j],dp[i][j] = max( dp[i][j-1], dp[i+1][j] )
class Solution {public: int longestPalindromeSubseq(string s) { int n = s.length(); if(n < 2) return n; //二维vector的定义,区别于二维数组 vector<vector<int>> dp(n, vector<int>(n, 1)); for(int i=0; i<n ;i++) { dp[i][i] = 1; } //i<j for(int j = 1; j < n; j++) { for(int i = j-1; i >= 0; i--) { if(s[i] == s[j]) { dp[i][j] = 2 + ( (i+1 <= j-1) ? dp[i+1][j-1] : 0); } else { dp[i][j] = max(dp[i+1][j], dp[i][j-1]); } } } return dp[0][n-1]; }};
0 0
- 【LeetCode】516. Longest Palindromic Subsequence最长回文子序列(非连续)
- LeetCode 516. Longest Palindromic Subsequence--最长回文子序列长度
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
- 516. Longest Palindromic Subsequence(最长回文子序列)
- leetcode 516. Longest Palindromic Subsequence 最长回文子序列 + DP动态规划
- leetcode 516. Longest Palindromic Subsequence 最大回文子序列
- 最长子序列回文问题,Longest Palindromic Subsequence
- [leetCode-516Longest Palindromic Subsequence]最长回文子序列DP算法详解
- Leetcode--Longest Palindromic Substring(最长回文子序列)
- UVA - 11404 Palindromic Subsequence (最长回文子序列)
- UVa 11404 - Palindromic Subsequence (最长回文子序列 DP)
- 最长回文子序列 Longest Palindromic Substring
- LeetCode | Longest Palindromic Substring(最长回文子串)
- 最长回文子串(LeetCode #5 Longest Palindromic Substring)
- LeetCode 5. Longest Palindromic Substring(最长回文子串)
- LeetCode---5. Longest Palindromic Substring(最长回文子串)
- LeetCode 300. Longest Increasing Subsequence(最长递增子序列)
- LeetCode--Longest Increasing Subsequence (最长递增子序列)Python
- warning: LF will be replaced by CRLF in public/js/plugins/tablesorter/jquery.met
- Convert BST to Greater Tree
- priority_queue
- SDN控制器之OVN实验一:介绍和安装OVN
- Table Control 响应双击事件
- 【LeetCode】516. Longest Palindromic Subsequence最长回文子序列(非连续)
- Linux命令基础5-文件重定向
- 背包问题 (二进制优化模版)
- 如何在Window系统下把Maven仓库中所有的jar文件都列出来?
- HashMap练习统计字符串中每个字符出现的次数和HashMap嵌套HashMap
- easyui from表单清空内容
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题) 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
- Linux下的查找指令
- QT QWidget设置窗体透明度方法汇总