LeetCode.516 最长回文子序列 详解
题目详情
给定一个字符串s
,找到其中最长的回文子序列。可以假设s
的最大长度为1000
。
示例 1:
输入:
"bbbab"
输出:
4
一个可能的最长回文子序列为 "bbbb"。
示例 2:
输入:
"cbbd"
输出:
2
一个可能的最长回文子序列为 "bb"。
解法
解法1: 动态规划
此题很容易想到动态规划,
像这种子字符串的题, 首先就能用二维数组dp[i][j]表示下标i~j的最优解
很容易得到下列递推式
dp[i+1][j-1] s[i] == s[j]
dp[i][j] = max(dp[i+1][j], dp[i][j-1]) s[i] != s[j]
初始条件 dp[i][i] = 1也可以轻松得到
AC代码
class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.length(),vector<int>(s.length()));int len = s.size();for (int i = len - 1; i >= 0; i--) {dp[i][i] = 1;for (int j = i+1; j < len; j++) {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][len-1];}
};
LeetCode.516 最长回文子序列 详解相关推荐
- leetcode - 516. 最长回文子序列
516. 最长回文子序列 -------------------------------------------- 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 ...
- Java实现 LeetCode 516 最长回文子序列
516. 最长回文子序列 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 ...
- LeetCode 516. 最长回文子序列(动态规划)
1. 题目 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "b ...
- Leetcode 516.最长回文子序列
Time: 20190906 Type: Medium 题目描述 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" ...
- 120. Leetcode 516. 最长回文子序列 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j] 步骤二.推断状态方程: 如果当前的s[i] == s[j], ...
- LeetCode 516. 最长回文子序列
截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...
- 【Leetcode】516. 最长回文子序列
516. 最长回文子序列 题目描述 解题思路:动态规划 题目描述 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度.子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任 ...
- 代码随想录补打卡 647 回文子串 516 最长回文子序列
647 回文子串 代码如下 func countSubstrings(s string) int { //dp[i][j]数组的含义是i-j这个范围的元素是否为回文串 dp := make([] ...
- 【Leetcode刷题Python】516. 最长回文子序列
1 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = &q ...
最新文章
- python中的数据包处理模块scapy调研笔记
- 超酷flash光芒光线特效
- 从一个Bug开始,重新认识一个强大的 Gson
- 2017-2018网络攻防第二周
- 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...
- 项目计划定制:项目计划划分与产品项目推进的有机结合
- python文件数据类型_Python核心数据类型——文件
- 进入多个页签_俄罗斯学生落地签如何办理?
- 大组合数:Lucas定理
- Atitit mybatis topic file list Total 300ge (9+条消息)MyBatis框架核心之(五)注解使用resultMap及多表查询 - 弱弱的猿 - CSD
- java 反序列化 怎么知道类_理解java中的序列化与反序列化
- EXCEL 在空值中批量填入某个数值
- 2015年换工作感想
- js中value^= 是什么意思
- 谁也没想到,苹果为了利润竟然如此敷衍用户!
- 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
- Scala中特质的使用以及特质冲突
- 2018计算机考研时间表,2018年考研时间与考试各科目的日程安排
- 数据洪流时代,企业转型需要修建自己的“都江堰”
- plt.subplot()函数解析(最清晰的解释)
热门文章
- Creating a 3D Logo in Photoshop Photoshop系列教程之如何创建一个3D Logo Lynda课程中文字幕
- 数据库-SQL语句练手
- gis插入的文本怎么搞成两行_办公小技巧:Powerpoint文本框的另类应用
- 爱奇艺如何治理数据和质量监控的?
- github私有仓库搭建
- 教授夫妻,4年发表7篇Nature!
- android性能测试 安兔兔,安兔兔发布:2018年6月Android手机性能榜单
- unity 修改Mono反破解加密Assembly-CSharp.dll
- 响应式网页移动端去掉滚动条_响应式网页设计和移动环境
- 小狼毫输入法设置成简体