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实现的多线程端口扫描工具分享
Jan 21 Python
python操作sqlite的CRUD实例分析
May 08 Python
python 网络爬虫初级实现代码
Feb 27 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 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
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python列表list数组array用法实例解析
2014/10/28 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
18岁生日感言
2014/01/12 职场文书
总经理任命书范本
2014/06/05 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
出国导师推荐信
2015/03/25 职场文书