这一类的问题可以使用动态规划的方法去做,我之前应该有几篇博文都是关于回文序列的求解的,正好有可以复用的代码就懒得再用别的方法写了,直接套用,思想还是滑窗切片,很简单就是运算会多点,下面是具体实现:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:寻找最长回文子序列
'''def slice_window(one_str,w=1):'''滑窗函数'''res_list=[]for i in range(0,len(one_str)-w+1):res_list.append(one_str[i:i+w])return res_listdef is_huiwen(one_str_list):  '''输入一个字符串列表,判断是否为回文序列 '''  if len(one_str_list)==1:  return True   else:  half=len(one_str_list)/2  if len(one_str_list)%2==0:  first_list=one_str_list[:half]  second_list=one_str_list[half:]  else:  first_list=one_str_list[:half]  second_list=one_str_list[half+1:]  if first_list==second_list[::-1]:  return True   else:  return False  def find_longest_sub_palindrome_str(one_str):'''主函数,寻找最长回文子序列'''all_sub=[]for i in range(1,len(one_str)):all_sub+=slice_window(one_str,i)all_sub.append(one_str)new_list=[]for one in all_sub:if is_huiwen(list(one)):new_list.append(one)new_list.sort(lambda x,y:cmp(len(x),len(y)),reverse=True)print new_list[0]if __name__ == '__main__':one_str_list=['uabcdcbaop','abcba','dmfdkgbbfdlg','mnfkabcbadk']for one_str in one_str_list:find_longest_sub_palindrome_str(one_str)

结果如下:

abcdcba
abcba
bb
abcba
[Finished in 0.3s]

python实现寻找最长回文子序列相关推荐

  1. 【Leetcode刷题Python】516. 最长回文子序列

    1 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = &q ...

  2. python实现寻找最长回文子串

    题目描述 给定一个字符串s,找到 s中最长的回文子串.你可以假设s的最大长度为 1000. LeetCode原题地址:https://leetcode-cn.com/problems/longest- ...

  3. 最长回文子序列 python_516. 最长回文子序列(Python)

    题目 难度:★★★☆☆ 类型:字符串 方法:动态规划 力扣链接请移步本题传送门 更多力扣中等题的解决方案请移步力扣中等题目录 给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度.可以假 ...

  4. 【1错笔记】psd面试——最长回文子序列 动态规划(2000字超详细解题)

    题目: 链接:https://ac.nowcoder.com/acm/contest/90/D 来源:牛客网 题目描述 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森 ...

  5. Leetcode——回文子串 / 最长回文子串 / 最长回文子序列

    1. 回文子串 (1)中心扩展 比如对一个字符串 ababa,选择最中间的 a 作为中心点,往两边扩散,第一次扩散发现 left 指向的是 b,right 指向的也是 b,所以是回文串,继续扩散,同理 ...

  6. 最长回文子序列题解 递归+动态规划

    从直接递归入手改为动态规划(官方的动态转移方程答案看不懂) 当某个字符串是回文序列时,考虑其内部字符串是否还是回文序列,可以看到每次遍历时的步骤是一致的,可以通过递归的方式求解 直接递归求解(此代码题 ...

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

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

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

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

  9. 最长回文子序列(LPS)

    问题描述: 回文是正序与逆序相同的非空字符串,例如"civic"."racecar"都是回文串.任意单个字符的回文是其本身. 求最长回文子序列要求在给定的字符串 ...

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

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

最新文章

  1. Java知识系统回顾整理01基础04操作符07Scanner
  2. Spring Boot:自定义starter
  3. 如何查看云服务器的系统版本,如何查看云服务器系统版本
  4. 数据告诉你史上最年轻35000分先生到底有多强?
  5. nginx向响应内容中追加内容(ngx_http_addition_module模块)
  6. 计算一列中某个值的个数
  7. JVM学习--(二)内存模型、可见性、指令重排序
  8. netty实现简单时事通讯_简单的Java实现Netty进行通信
  9. 光纤耦合角度_一种光纤准直器的耦合找光方法与流程
  10. 【java】编写一个圆柱体类Cylinder,它继承于Circle类
  11. C Primer Plus 第七章 第七题
  12. 辽宁专科php教材用什么,辽宁新高考改革方案的具体内容是什么?
  13. 小米6 刷LineageOS教程
  14. 小米pro15拆机_实战小米笔记本PRO 15.6寸拆解 加装M.2海力士固态硬盘
  15. 懂点excel作图, 怎么让pyechart作的图更具“职场范“呢?丨pyechart工作作图模板
  16. java 1 20内奇数的乘积_计算所有奇数的乘积
  17. 搭建gos_如何将记录器注入gos http处理程序
  18. 查找斐波纳契数列中第 N 个数
  19. 有一台服务器可以做哪些很酷的事情
  20. Annotation 和Spring Annotation 知识整理

热门文章

  1. SpringMVC (三)处理器映射器的配置和AbstractController的使用
  2. Dubbo架构设计详解(转载)
  3. 海量存储之十九--一致性和高可用专题
  4. Memcached(七)Memcached的并发实例
  5. BZOJ 1677. [Usaco2005 Jan]Sumsets 求和
  6. nGrinder Loadrunner vs nGrinder
  7. 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
  8. PHP7 学习笔记(十二)gRPC
  9. 2016.6.2近日学习计划
  10. 支持向量机(SVM)非线性数据切割