求两字符串最长公共子序列LCS的应用—删除字符串的字符剩下回文串
来源:互联网 发布:淘宝客单页网站源码 编辑:程序博客网 时间:2024/05/16 03:23
转自:http://blog.csdn.net/yebanxin/article/details/52186706
问题描述:
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。
例如:输入:google 输出:2
思路:回文串通常可以用逆序的方式寻找思路。例如字符串google逆序后elgoog,字符串alibaba逆序后ababila,可以发现求回文串的问题可以转换成求两个字符串的最大公共子序列的问题(序列可以不连续)。
需要删除的长度 = 字符串的长度 - 字符串与逆序字符串的最大公共子序列的长度
问题描述:求两个字符串的最大公共子序列(LCS)(序列可以不连续)
例如:alibaba和ababila的最大公共子序列为ababa
思路:对于字符串a和字符串b,长度分别为m,n,先考虑他们的最后一个字符。
(1)如果相等,说明最后一个字符一定可以是最大公共子序列的最后一位(这里使用可以的意思是:有多解),那么我们可以先丢弃这最后一位,求解字符串a.substr(0, m-2)和b.substr(0, n-2)的最大公共子序列。a.substr(x,y)表示截取字符串a的x到y下标之间的部分
(2)如果不相等,则最大子序列一定在一下两者之间:a.substr(0, m-2) 和 b.substr(0, n-1)(丢弃a的最后一位)a.substr(0, m-1) 和 b.substr(0, n-2)(丢弃b的最后一位)
阅读全文
0 0
- 求两字符串最长公共子序列LCS的应用—删除字符串的字符剩下回文串
- 【动态规划】LCS算法:求两字符串最大公共子序列/删除字符使成为回文串
- 动态规划问题--最长公共子序列(LCS)问题--删除一些字符使得剩下的是一个回文子串
- 2017百度校园招聘编程题 删除字符构造最长回文字符串(求最长公共子序列的变种)
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串的最长公共子串(LCS)
- 插入最少的字符使字符串成为回文串 <最长公共子序列 + 回文>
- 求str最长回文子序列是求这个原字符串和它反转字符串的最长公共子序列。
- 求两字符串最长公共子序列
- NYOJ 37 回文字符串 (lcs最长公共子序列)
- 最大公共子序列(删除字符使得剩下的是回文串)
- 求两字符串的最长公共连续子串
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 最长回文子序列:字符串反转+动态规划,最长公共子序列LCS算法
- 求字符串的最长回文子串
- 求字符串的最长回文子串
- 51Nod1092 回文字符串-----求最长公共子序列
- 总结springmvc访问静态资源的三种方式
- 常用的数据字典
- 二分图
- hdu 6150
- 517_glide加载不出gif
- 求两字符串最长公共子序列LCS的应用—删除字符串的字符剩下回文串
- EhCache缓存框架(2)-EhCache持久化
- java学习笔记之线程3
- 最长公共子序列(LCS)简介
- webpack教程(四)——css的加载
- Js制作简单的网页
- 笨方法学Python 习题 46: 一个项目骨架
- hdu6119 小小粉丝度度熊【尺取】
- 腾讯云系列三:Centos7 安装 mysql数据库 远程连接 字符集设置