python实现寻找最长回文子序列的方法


Posted in Python onJune 02, 2018

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

#!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_list 
 
 
def 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 相关文章推荐
python原始套接字编程示例分享
Feb 21 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
python3大文件解压和基本操作
Dec 15 Python
Python标准库笔记struct模块的使用
Feb 22 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 #Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 #Python
用Python一键搭建Http服务器的方法
Jun 01 #Python
python 编写简单网页服务器的实例
Jun 01 #Python
Django中间件实现拦截器的方法
Jun 01 #Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 #Python
详解Python如何生成词云的方法
Jun 01 #Python
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
基于mysql的论坛(7)
2006/10/09 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
类之Prototype.js学习
2007/06/13 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
如何基于Python批量下载音乐
2019/11/11 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
家长评语和期望
2014/02/10 职场文书
护理专业自荐信范文
2014/02/26 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python