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 12 Python
django 在原有表格添加或删除字段的实例
May 27 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
微信公众号token验证失败解决方案
Jul 22 Python
如何使用python进行pdf文件分割
Nov 11 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
python实现学生成绩测评系统
Jun 22 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
Python grpc超时机制代码示例
Sep 14 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
用Python爬取某乎手机APP数据
Jun 15 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
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
小程序实现分类页
2019/07/12 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
详解javascript void(0)
2020/07/13 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
PHP面试题-$message和$$message的区别
2015/12/08 面试题
营业员个人总结的自我评价
2013/10/25 职场文书
质检部经理岗位职责
2014/02/19 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
公司感谢信范文
2015/01/22 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
高一数学教学反思
2016/02/18 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript