题目详情

给定一个字符串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 最长回文子序列 详解相关推荐

  1. leetcode - 516. 最长回文子序列

    516. 最长回文子序列 -------------------------------------------- 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 ...

  2. Java实现 LeetCode 516 最长回文子序列

    516. 最长回文子序列 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 ...

  3. LeetCode 516. 最长回文子序列(动态规划)

    1. 题目 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "b ...

  4. Leetcode 516.最长回文子序列

    Time: 20190906 Type: Medium 题目描述 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" ...

  5. 120. Leetcode 516. 最长回文子序列 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j] 步骤二.推断状态方程: 如果当前的s[i] == s[j], ...

  6. LeetCode 516. 最长回文子序列

    截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...

  7. 【Leetcode】516. 最长回文子序列

    516. 最长回文子序列 题目描述 解题思路:动态规划 题目描述 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度.子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任 ...

  8. 代码随想录补打卡 647 回文子串 516 最长回文子序列

    647 回文子串 代码如下 func countSubstrings(s string) int {    //dp[i][j]数组的含义是i-j这个范围的元素是否为回文串 dp := make([] ...

  9. 【Leetcode刷题Python】516. 最长回文子序列

    1 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = &q ...

最新文章

  1. python中的数据包处理模块scapy调研笔记
  2. 超酷flash光芒光线特效
  3. 从一个Bug开始,重新认识一个强大的 Gson
  4. 2017-2018网络攻防第二周
  5. 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...
  6. 项目计划定制:项目计划划分与产品项目推进的有机结合
  7. python文件数据类型_Python核心数据类型——文件
  8. 进入多个页签_俄罗斯学生落地签如何办理?
  9. 大组合数:Lucas定理
  10. Atitit mybatis topic file list Total 300ge (9+条消息)MyBatis框架核心之(五)注解使用resultMap及多表查询 - 弱弱的猿 - CSD
  11. java 反序列化 怎么知道类_理解java中的序列化与反序列化
  12. EXCEL 在空值中批量填入某个数值
  13. 2015年换工作感想
  14. js中value^= 是什么意思
  15. 谁也没想到,苹果为了利润竟然如此敷衍用户!
  16. 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
  17. Scala中特质的使用以及特质冲突
  18. 2018计算机考研时间表,2018年考研时间与考试各科目的日程安排
  19. 数据洪流时代,企业转型需要修建自己的“都江堰”
  20. plt.subplot()函数解析(最清晰的解释)

热门文章

  1. Creating a 3D Logo in Photoshop Photoshop系列教程之如何创建一个3D Logo Lynda课程中文字幕
  2. 数据库-SQL语句练手
  3. gis插入的文本怎么搞成两行_办公小技巧:Powerpoint文本框的另类应用
  4. 爱奇艺如何治理数据和质量监控的?
  5. github私有仓库搭建
  6. 教授夫妻,4年发表7篇Nature!
  7. android性能测试 安兔兔,安兔兔发布:2018年6月Android手机性能榜单
  8. unity 修改Mono反破解加密Assembly-CSharp.dll
  9. 响应式网页移动端去掉滚动条_响应式网页设计和移动环境
  10. 小狼毫输入法设置成简体