516. 最长回文子序列

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

示例 1:

输入:

“bbbab”

输出:

4

一个可能的最长回文子序列为 “bbbb”。

示例 2:

输入:

“cbbd”

输出:

2

一个可能的最长回文子序列为 “bb”。

PS:

动态规划,

第一个就不多说了,dp【i】【j】就是截取后i位,然后挨着截取后i位的第j位

相等就+2,不相等找【i+1】【j】和【i】【j-1】中最大的

第二个,根据第一个我一直是用的我的上一个,因为我是i越来越小

然后直接用两个数组,一个保存上一个,一个记录现在,

然后替换即可

class Solution {
// public int longestPalindromeSubseq(String s) {
// if (s == null || s.length() == 0) {
// return 0;
// }
// int n = s.length();
// int[][] dp = new int[n][n];
// for (int i = n - 1; i >= 0; i--) {
// dp[i][i] = 1;
// for (int j = i + 1; j < n; j++) {
// if (s.charAt(i) == s.charAt(j)) {
// dp[i][j] = dp[i + 1][j - 1] + 2;
// } else {
// dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]);
// }
// }
// }
// return dp[0][n - 1];
// } public int longestPalindromeSubseq(String s) {
char[] chars=s.toCharArray();
int length=s.length();
int[] current=new int[length];
int[] pre =new int[length];
for(int i=length-1;i>=0;i--){
current[i]=1;
for(int j=i+1;j<length;j++){
if(chars[i]==chars[j]){
current[j]=pre[j-1]+2;
}else{
current[j]=Math.max(current[j-1],pre[j]);
}
}
int[] tmp=pre;
pre=current;
current=tmp;
}
return pre[length-1];
} }

Java实现 LeetCode 516 最长回文子序列的更多相关文章

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

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

  2. LeetCode 516——最长回文子序列

    1. 题目 2. 解答 与最长回文子串类似,我们可以用动态规划来求解这个问题,只不过这里的子序列可以不连续.我们定义状态 state[i][j] 表示子串 s[i, j] 的最长回文子序列长度,那么状 ...

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

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

  4. Java实现 LeetCode 5 最长回文子串

    5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...

  5. Java实现 LeetCode 409 最长回文串

    409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意 ...

  6. 【LeetCode】516. Longest Palindromic Subsequence 最长回文子序列

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 代码 刷题心得 日期 题目地址:https://le ...

  7. [LeetCode] 516. Longest Palindromic Subsequence 最长回文子序列

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

  8. LeetCode:最长回文子串【5】

    LeetCode:最长回文子串[5] 题目描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: ...

  9. [LeetCode] Longest Palindromic Subsequence 最长回文子序列

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

随机推荐

  1. 【Kafka】Stream API

    Stream API Kafka官方文档给了基本格式 http://kafka.apachecn.org/10/javadoc/index.html?org/apache/kafka/streams/ ...

  2. 基于mykernel 2.0编写一个操作系统内核

    一.配置mykernel 2.0,熟悉Linux内核的编译 1.实验环境:VMware 15 Pro,Ubuntu 18.04.4 2.配置环境 1)在电脑上先下载好以下两个文件,之后通过共享文件夹, ...

  3. [NBUT 1458 Teemo]区间第k大问题,划分树

    裸的区间第k大问题,划分树搞起. #pragma comment(linker, "/STACK:10240000") #include <map> #include ...

  4. 使用JDBC操作MySQL

    使用JDBC操作MySQL 步骤 加载驱动 连接数据库 操作数据库(增删改查) 关闭结果集,操作,数据库 准备工作 java连接MySQL的jar包 加载数据库驱动 public class Load ...

  5. java 使用抽象工厂封装特性方法

    1.创建抽象类:封装含有相同特性的方法. */ public abstract class AbstractPayment { public abstract String progress() th ...

  6. MySQL表的CRUD及多表查询

    数据库表的增删改查操作: 增.删.改 查: 单表查询 简单查询.where约束.group by分组.聚合查询.having过滤.order by排序.limit限制.正则匹配 多表查询 连表查询:交 ...

  7. 数据结构----双端队列Dque

    双端队列的概念与数据结构 deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. deque 特殊之处在于添加和删除项是非限制性的.可以在前面或后面 ...

  8. el-table合理应用ref属性,使el-input获得焦点

    全篇不着一丝文字痕迹,仅记录而已

  9. 就为了一个原子操作,其他CPU核心罢工了

    i++问题 "阿Q赶快回去吧,隔壁二号车间的虎子说我们改了他们的数据,上门来闹事了" 由于老K的突然出现,我不得不提前结束与小黑的交流,赶回了CPU一号车间. 见到我回来,虎子立刻 ...

  10. Spring 依赖注入(DI)简介

    依赖注入的英文表示为dependency injection,缩写为DI. Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系. 当编写一个复杂的 Java 应用程序时, ...