516. 最长回文子序列

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

示例 1:
输入:
“bbbab”
输出:
4
一个可能的最长回文子序列为 “bbbb”。

示例 2:
输入:
“cbbd”
输出:
2
一个可能的最长回文子序列为 “bb”。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-subsequence
————————————————————————————————————————————
解题思路:

  1. 状态:
    f[i][j] 表示 s 的第 i 个字符到第 j 个字符组成的子串中,最长的回文序列长度是多少。

  2. 转移方程:
    如果 s 的第 i 个字符和第 j 个字符相同的话
    f[i][j] = f[i + 1][j - 1] + 2
    如果 s 的第 i 个字符和第 j 个字符不同的话
    f[i][j] = max(f[i + 1][j], f[i][j - 1])

然后注意遍历顺序,i 从最后一个字符开始往前遍历,j 从 i + 1 开始往后遍历,这样可以保证每个子问题都已经算好了。

初始化
f[i][i] = 1 单个字符的最长回文序列是 1

结果
f[0][n - 1]

作者:a380922457
链接:https://leetcode-cn.com/problems/two-sum/solution/dong-tai-gui-hua-si-yao-su-by-a380922457-3/
来源:力扣(LeetCode)
————————————————————————————————————————————
具体的C++代码如下所示:

class Solution {
public:int longestPalindromeSubseq(string s) {int length = s.size();vector<vector<int>> dp(length,vector<int>(length,0));for(int i=length-1;i>=0;i--){dp[i][i]=1;for(int j=i+1;j<length;j++){if(s[i]==s[j])dp[i][j]=dp[i+1][j-1]+2;elsedp[i][j]=max(dp[i+1][j],dp[i][j-1]);}}return dp[0][length-1];}
};

leetcode - 516. 最长回文子序列相关推荐

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

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

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

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

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

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

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

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

  5. LeetCode.516 最长回文子序列 详解

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

  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. Exchange2010配置实验(六)部署forefront到edge服务器
  2. 字符串按长度转换成数组
  3. python中常见的流程结构-【Python2】04、Python程序控制结构
  4. spring中是如何解析@Profile注解的
  5. *Codeforces587E. Duff as a Queen
  6. 单片机原理及其应用——单片机控制按键点亮发光二极管
  7. 如何在发文一小时后预测出公众号的阅读量?
  8. [C++11]decltype在泛型编程中的使用举例
  9. 微软笔试题(看到的写答案啊)
  10. 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点
  11. 深度学习系列(一)【人类语言处理--引言】
  12. jQuery 学习笔记之十 (jQuery ajax )
  13. git刷新分支列表_如何使用Git小技巧让你开发协作过程更加顺利?
  14. java 获取已有字体,java获取本机所有可用字体
  15. 数据可视化|用雷达图进行对比分析
  16. editplus自动换行html,EditPlus如何自动换行
  17. 故宫景点功课4:太和殿院落下
  18. 前高管苏箐离职,原因或在于他的“杀人”言论同样对华为自身不利
  19. readmemh函数引用的txt格式_memory - 在Verilog中,我尝试使用$ readmemb来读取.txt文件,但它仅在内存中加载xxxxx(不必担心) - 堆栈内存溢出...
  20. 初识C语言——C语言的第一课

热门文章

  1. 刚copy试探发表了一篇文章文章,oschina感觉良好
  2. VC 实现文件夹属性的获取与更改
  3. Git 原理详解及实用指南
  4. 为什么选择 npm script?
  5. 如何优化WebAPP性能:从五个层面上彻底优化前端项目性能
  6. Nginx使用HTTPS建立与上游服务器的网络通信
  7. 容器编排技术 -- Kubernetes kubectl create namespace 命令详解
  8. Hibernate Criteria示例教程
  9. 数据库面试 - 如何设计才可以让系统从未分库分表动态切换到分库分表上?
  10. 数据结构系统学习(1)数据类型和数据结构的概念