问题描述:

回文是正序与逆序相同的非空字符串,例如“civic”、“racecar”都是回文串。任意单个字符的回文是其本身。

求最长回文子序列要求在给定的字符串中找出最长的回文子序列(即找出的序列不要求在原序列中连续)。

例如,序列A=“javaej”,其最长回文子序列为“javaj”,长度为5。

递推关系:

其子问题的填充顺序为(以javaej为例):

算法实现:

package agdp;
public class LPS {public static int getLPS(String str){int n = str.length();int[][] aux = new int[n][n];for (int i = 0; i < n; i++) {aux[i][i] = 1;//单子字符,最长回文子序列长度为1
        }for (int l = 2; l <= n; l++) {//子序列长度,从2到nfor (int i = 0,j; i <= n-l; i++) {j = l+i-1;if (str.charAt(i) == str.charAt(j)) {aux[i][j] = aux[i+1][j-1]+2;//首尾元素相等,必是回文子序列中的元素}else {//首尾元素不等,取(i+1)->j序列和i->(j-1)系列中较长的回文子序列aux[i][j] = Math.max(aux[i+1][j], aux[i][j-1]);}}}return aux[0][n-1];}public static void main(String[] args) {// TODO Auto-generated method stub
//        String str = "character";;String str = "javaej";int result  = getLPS(str);System.out.println(result);}
}

转载于:https://www.cnblogs.com/qcblog/p/7819393.html

最长回文子序列(LPS)相关推荐

  1. 动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )

    1.问题描述 给定一个字符串(序列),求该序列的最长的回文子序列. 2.分析 需要理解的几个概念: ---回文 ---子序列 ---子串 http://www.cnblogs.com/LCCRNblo ...

  2. 最长回文子序列与最长回文子串

    最长回文子序列与最长回文子串不同. 字符串的子串:一个字符串中连续的一段就是这个字符串的子串. 最长回文子串:就是字符串中最长的身为回文串的子串. 最长回文子序列不一定连续 最长回文子序列: 方法一: ...

  3. 动态规划:最长回文子串 最长回文子序列

    一.题目 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如 "a"."aba"."abba". 对于一个字符串,其子 ...

  4. C++ 最长回文子序列

    #include<iostream> #include<string> #include<algorithm> using namespace std;//递归方法 ...

  5. 动态数组怎么定义_动态规划最长回文子序列

    动态规划|最长回文子序列 今天一起来学习Leetcode第 516 题:最长回文子序列. 题目描述 题目分析 首先回文字符串指的是形如"a","aa",''ab ...

  6. 算法62---最长回文子序列长度(子串)、回文子序列总共个数(子串)【动态规划】...

    参考链接:https://www.cnblogs.com/AndyJee/p/4465696.html 一.题目:最长回文子序列长度 给定字符串,求它的最长回文子序列长度.回文子序列反转字符顺序后仍然 ...

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

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

  8. C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)

    C++longest palindromic subsequence最长回文子序列算法 C++longest palindromic subsequence最长回文子序列算法实现完整源码(定义,实现, ...

  9. leetcode516. 最长回文子序列(动态规划)

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

最新文章

  1. 关于mysql字符集及导入导出
  2. 【内推】腾讯优图(深圳)实验室招计算机视觉算法实习生
  3. unity editor下选中GameObject粘贴复制pos信息
  4. 胃癌2019csco指南_2019 CSCO胃癌诊疗指南精华来了!
  5. Leecode刷题热题HOT100(3)——无重复字符最长子串
  6. About Wisdom
  7. jvm诊断之学习jcmd入门
  8. (源码)群体智能优化算法之正余弦优化算法(Sine Cosine Algorithm,SCA)
  9. Hbase架构与实现
  10. 【转】MFC中用CFile读取和写入文件2
  11. python给pdf加水印_用PDFlib给PDF添加水印(Python)
  12. protues仿真技巧——制作PCB图
  13. 正态分布某一点的概率怎么算_正态分布的抽卡概率算法
  14. 下载离线aptana的eclipse插件
  15. 卧槽,移动互联网时代这就结束了?下一个风口是啥?
  16. 支付宝首次揭秘红包技术
  17. 分享Photoshop脚本代码_压缩,图片置灰,切图导出等
  18. 根据两个经纬度点调用百度地图应用查询路线 适用android或者ios中及网页浏览(手机网页同样适用)
  19. 描边时消除锯齿SetSmoothingMode
  20. 又有12款APP违规收集用户信息,下架整改

热门文章

  1. Grunt-- JavaScript世界的构建工具
  2. linux 使用FIO测试磁盘iops
  3. webView 点击连接如何不让跳转到系统的 浏览器
  4. One sentence only!!
  5. 软件开发模式对比(瀑布、迭代、螺旋、敏捷)
  6. Linux下为文件增加列的shell脚本
  7. Activity本质和内部实现机制
  8. 虚拟光驱安装服务器无法运行,windows7虚拟光驱无法正常打开怎么办
  9. python冒泡排序_5种python方法实现冒泡排序可视化:Bubble Sort Visualizer
  10. CSS3 Flexbox 弹性盒与 css3 阴影效果的演示