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字典简介以及用法详解
Nov 15 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
django加载本地html的方法
May 27 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
linux中nohup和后台运行进程查看及终止
Jun 24 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
Python魔术方法详解
2015/02/14 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
法学院毕业生求职信
2014/06/25 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
趣味运动会广播稿
2015/08/19 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL