力扣516:最长回文子序列
516. 最长回文子序列
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。
子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。
输入:s = “bbbab”
输出:4
解释:一个可能的最长回文子序列为 “bbbb” 。
示例 2:
输入:s = “cbbd”
输出:2
解释:一个可能的最长回文子序列为 “bb” 。
动态规划的关键是确定状态的含义,即我们定义的dp数组的含义。这里我们可以定义dp[i] [j] 为s[i]到s[j]的最长回文子序列的长度,根据上面我们的第一步状态转移方程可以写出完整的状态转移方程。
当s[i]==s[j]时,dp[i] [j] = dp[i-1] [j-1]+2
当s[i]!=s[j]时, dp[i] [j] = max(dp[i+1] [j], dp[i] [j-1])
class Solution {
public:int longestPalindromeSubseq(string s) {int n=s.size();vector<vector<int>> dp(n,vector<int>(n));for(int i=n-1;i>=0;i--){dp[i][i]=1;for(int j=i+1;j<n;j++){dp[j][j]=1;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][n-1];}
};
力扣516:最长回文子序列相关推荐
- leetcode - 516. 最长回文子序列
516. 最长回文子序列 -------------------------------------------- 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 ...
- 【Leetcode】516. 最长回文子序列
516. 最长回文子序列 题目描述 解题思路:动态规划 题目描述 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度.子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任 ...
- 代码随想录补打卡 647 回文子串 516 最长回文子序列
647 回文子串 代码如下 func countSubstrings(s string) int { //dp[i][j]数组的含义是i-j这个范围的元素是否为回文串 dp := make([] ...
- 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" ...
- 【代码训练营】day56 | 647. 回文子串 516.最长回文子序列
所用代码 java 回文子串 LeetCode 647 题目链接:回文子串 LeetCode 647 - 中等 思路 dp[i] [j]:[i, j]子串是否是回文子串,是回文就是true 递推公式: ...
- 120. Leetcode 516. 最长回文子序列 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j] 步骤二.推断状态方程: 如果当前的s[i] == s[j], ...
- 【Leetcode刷题Python】516. 最长回文子序列
1 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = &q ...
- LeetCode.516 最长回文子序列 详解
题目详情 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bb ...
最新文章
- hibernate中load和get方法的区别 lazy的策略
- python等间隔取样
- malloc和new出来的地址都是虚拟地址 你就说内存管理单元怎么可能让你直接操作硬件内存地址!...
- 谷歌浏览器mac_Mac用户浏览网页不可少的浏览器-谷歌Chrome
- linux中menu命令,menucofig 详解
- 8问8答,一篇文章读懂空间音效
- 基于 HTML5 Canvas 的交互式地铁线路图 1
- Vue 3.0响应式API案例
- Python风格总结: List sort()方法
- angularjs java 实例_[Java教程]angularjs小练习(分别通过ng
- win10计算器_30年后终更新!新一代Win10记事本详细体验
- 程序员之死——致所有重压下的你
- 游戏服务器经常被DDOS攻击应该怎么办?
- 影院在线选座购票API接口
- 动态IP与静态ip的区别是什么
- Ubuntu 16.04下载编译Android11源码
- 二维码生成工具微信小程序源码下载
- C++静态成员对象与静态成员函数
- LeetCode题解(0625):最小因式分解(Python)
- Golang 基础:底层并发原语 Mutex RWMutex Cond WaitGroup Once等使用和基本实现
热门文章
- $slots.default
- AlphaGo打星际,人类的胜算几何?
- tcp_tw_recycle参数引发的故障
- GitHub Copilot一直等待问题
- 经典电影推荐!!!保质保量
- RN小数转中文数字(0.001=千分之一)
- 收藏这些vue项目性能优化方式,总有一天能用上
- 今天写了老师布置的作业,还没写完 哇哇哇 是用递归方法求n阶勒让德多项式的值 题目就不写了【因为我也不知道怎么搞 哈哈哈哈哈】我用的是整形哈
- 电商全渠道秩序维护 八爪鱼大数据来帮忙
- Stata:异方差和自相关稳健F检验和t检验