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

1、问题描述

给定一个字符串(序列),求该序列的最长的回文子序列。

2、分析

需要理解的几个概念:

---回文

---子序列

---子串

http://www.cnblogs.com/LCCRNblog/p/4321398.html这一篇文章描述了利用动态规划求解两个序列的最长公共子序列(Longest Common Sequence)。

假设LCS(X,Y)表示序列X,Y的最长公共子序列,LPS(X)表示X的最长回文子序列;

在设序列X1为X的装置序列(逆序),比如X=“123”,X1=“321”;

则有:

LCS(X,X1) = LPS(X)。

 1 class Solution {
 2 public:
 3     string longestPalindrome(string s) {
 4         string s1(s.rbegin(),s.rend());
 5         //s1.reserve()
 6         //cout << s1 <<endl;
 7 
 8         return LCS(s,s1);
 9 
10     }
11 
12 
13     string LCS(string str1,string str2)
14     {
15 
16         int length1,length2;
17         //int** arr;
18         const int row=110;
19         const int col=110;
20         int arr[row][col];
21 
22         length1 = str1.length(); 
23         length2 = str2.length();
24         
25         memset(arr,0,sizeof(arr));
26         for (int i=1;i<=length1;i++)
27         {
28             for (int j=1;j<=length2;j++)
29             {
30                 if (str1[i-1] == str2[j-1])//这里为什么要用i-1,j-1,因为str中的下标从0开始
31                 {
32                     arr[i][j]=arr[i-1][j-1]+1;
33                 }
34                 else
35                 {
36                     arr[i][j]=(arr[i-1][j] > arr[i][j-1]?arr[i-1][j]:arr[i][j-1]);
37                 }
38             }
39         }
40         //cout << arr[length1][length2]<<endl;
41 
42         //打印其中一个最长子序列
43         string print="";
44         for (int i=length1,j=length2;i>=1&&j>=1;)//这里是倒序打印的
45         {
46             if (str1[i-1] == str2[j-1])
47             {
48                 //cout << str1[i-1]<<" ";//按照这样会倒序打印
49                 print = str1[i-1]+print;
50                 i--;
51                 j--;
52             }else
53             {
54                 if(arr[i][j -1] >= arr[i - 1][j])j--;
55                 else
56                     i--;
57 
58             }
59 
60         }
61         return print;
62 
63     }
64 
65 };

 

转载于:https://www.cnblogs.com/LCCRNblog/p/4444058.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...

java入门(二)标识符数据类型类型转换变量、常量、作用域本次笔记引用B站&#xff1a;狂神说,虽然早就会了&#xff0c;现在回头来敲下基础&#xff0c;加深印象1.标识符&#xff1a;java所有的组成部分都需要名字。类名丶变量名丶方法名统称为标识符。标识符大小写敏感。不能使…

0421 AutoLayout的实践/基本使用

历史:从iOS 6开始 ,之前都是3.5英寸没有考虑到适配.iPhone5 变成了4英寸,所以推出了Auto Layout理解: 另外一个体系,去描述位置.像素:点: // 勘误: 图中的像素应为 “点"// 写上以上代码,就可以删掉系统创建的控制器和storyBoard了.// 创建控制器,勾选Xib[]拖一个uiview背…

C#实现UTC时间与Datetime转换

为了便于传输&#xff0c;通信过程中传输的都是&#xff1a;当前时间跟标准时间相隔的秒数&#xff0c;并且是以16进制字节的形式传输的。 1 public double ConvertDateTimeInt(System.DateTime time)//将时间格式的数据类型转换成浮点数类型 2 {3 doubl…

java selenium iframe_java selenium处理Iframe中的元素示例

java selenium 处理Iframe 中的元素有时候我们定位元素的时候&#xff0c;发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面阅读目录什么是iframeiframe 就是HTML 中&#xff0c;用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中&#xff0c;可以…

des 向量 java_在JAVA中使用DES算法

DES算法提供CBC, OFB, CFB, ECB四种模式&#xff0c;MAC是基于ECB实现的。一、数据补位DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文&#xff0c;最后一段不足8个字节&#xff0c;按照需求补足8个字节(通常补00或者FF&#xff0c;根…

可访问性不一致的原因与解决方法

出现原因&#xff0c;其中一个是返回参数的访问级别小于函数的访问级别&#xff0c;也就是说当定义一个返回参数的方法的时候&#xff0c;如果返回参数的访问级别低于方法的访问级别&#xff0c;此时就会出现这样的错误。如果返回的参数不能被访问,那么定义的返回的方法也是错误…

jQuery 事件 - bind() 方法

定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序&#xff0c;并规定事件发生时运行的函数。 实例1&#xff08;一个事件&#xff09; 记得把js引用地址换掉 当点击鼠标时&#xff0c;隐藏或显示 p 元素&#xff1a; <html><head><script type"…

java 圆形按钮,如何在Java中创建圆形的JButton?

I want to create rounded JButton in Java...For that I use rounded image and placed that image on button but I didnt get rounded button..please any one can tell how to create rounded button in Java like show in below figure..thanks in advance.....解决方案If…

Python学习 Day 3 字符串 编码 list tuple 循环 dict set

字符串和编码 字符 ASCII Unicode UTF-8 A 1000001 00000000 01000001 1000001 中 x 01001110 00101101 11100100 10111000 10101101 格式化 在Python中&#xff0c;采用的格式化方式和C语言是一致的&#xff0c;用%实现&#xff0c;举例如下&#xff1a; >>&…

java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...

有很多文章指出使用JPA / hibernate不需要使用DTO同样在article由SO成员Bohzo我很少需要阅读DTO甚至在articles中反对暴露实体声明当实体没有任何行为时(当它们是POJO时)不需要具有DTO,如在贫血域模型中那样假设有一个Entity类class Department{List employees //lazily loaded…

构建之法现代软件概述

软件工程&#xff1a;就是用科学的知识工程和技术原理来定义&#xff0c;开发&#xff0c;维护软件的一门学科。软件工程的目标&#xff1a;付出较低开发成本&#xff1b;达到要求的功能&#xff1b;取得较好的性能&#xff1b;开发的软件易于移植&#xff1b;只需较低的维护费…

java 高飞_高飞(土木与水利工程学院)老师 - 合肥工业大学

高飞高飞老师的简历姓名:高飞 性别:男 出生年月:1962.11最终学位:硕士 毕业院校:合肥工业大学职称:教授 职务:副院长电话:0551-2901441,13705510744E-mail:gaofeihfut.edu.cn现从事专业:测绘科学与技术社会团体任职:1.全国高等学校测绘学科教学指导委员会,委员;2.中国测绘学会工…

Python_03-数据类型

1.1 数据类型 基本数据类型&#xff1a;字符串&#xff0c;整数&#xff0c;浮点数&#xff0c;布尔型 集合类型&#xff1a;列表&#xff08;list), 元组&#xff08;tuple), 字典&#xff08;dictionary或hash) 列表&#xff08;list&#xff09;的定义&#xff1a; aList …

java串口监听超时_从串口读取时如何实现read()的超时(C / C)

有几种可能的方法 . 如果程序最终将定时多个i / o操作&#xff0c; select() 是明智的选择 .但是&#xff0c;如果唯一的输入来自此i / o&#xff0c;则选择非阻塞i / o和时序是一种简单的方法 . 我已经将它从单字符i / o扩展到多字符&#xff0c;使其成为一个更普遍的完整示例…

64位操作系统下IIS报“试图加载格式不正确的程序”错误

缘由&#xff1a;在64位操作系统下IIS发布32位的项目&#xff0c;报“项目依赖的dll无法读取&#xff0c;试图加载格式不正确的程序”错误。 原因&#xff1a;程序集之间的通讯要么全是64位环境下的&#xff0c;要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不…

java训练_Java练习

package exec;/*2.根据圆柱体的半径和高&#xff0c;使用下面的公式&#xff0c;计算圆柱的体积面积半径*半径*π体积面积*高 */public class work01 {public static void main(String[] args) {// TODO Auto-generated method stub//定义圆柱的高和半径&#xff0c;面积&#…

jwPlayer为js预留的回调方法

参考地址&#xff1a;http://www.cnblogs.com/lori/archive/2014/05/05/3709459.html 应用场合 播放时记录当前视频的时间&#xff0c;播放完成时写入完成的时间&#xff0c;像这些功能&#xff0c;我们都可以通过事件回调的方法解决&#xff0c;即为events属性赋相应的值&…

新手学java7编程_新手学Java 7编程:面向对象程序设计

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼面向对象程序设计Java的核心是面向对象程序设计(OOP)。面向对象方法论与Java是密不可分的&#xff0c;而Java所有的程序至少在某种程度上都是面向对象的。因为OOP对Java的重要性&#xff0c;所以在开始编写一个哪怕是很简单的Java程…

脚本两则--用于快速部署HADOOP,SPARK这些(特别是VM虚拟机模板部署出来的)。。...

感觉可能只是适合我自己的部署习惯吧&#xff0c;且只针对CENTOS6及以下版本&#xff0c;以后有时间&#xff0c;可能还是要改进。。 1&#xff0c;从VM的模块产生的虚拟机&#xff0c;如何快速搞定网络配置&#xff1f; #!/bin/bash#usage:./init_cdh_sys.sh hostname hostip …

java值参_JAVA赋值和传参理解

作者&#xff1a;Intopass链接&#xff1a;https://www.zhihu.com/question/31203609/answer/50992895来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。第一个例子&#xff1a;基本类型void foo(int value) {value 100;}…