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中xrange和range的区别
May 13 Python
python简单实现旋转图片的方法
May 30 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
python编程实现希尔排序
Apr 13 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
Python 实现网页自动截图的示例讲解
May 17 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 Python
Python基于execjs运行js过程解析
Nov 27 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取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP多维数组排序array详解
2017/11/21 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
深入浅析Python字符编码
2015/11/12 Python
python文件的md5加密方法
2016/04/06 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
如何解决python多种版本冲突问题
2020/10/13 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
毕业生简单求职信
2013/11/19 职场文书
称象教学反思
2014/02/03 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
应届生自荐信
2014/06/30 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
股权转让协议书
2014/12/07 职场文书
2016年会开场白台词
2015/06/01 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers