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编辑器WingIDE的使用经验总结
Aug 31 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
python树莓派红外反射传感器
Jan 21 Python
python里 super类的工作原理详解
Jun 19 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
python编程项目中线上问题排查与解决
Nov 01 Python
python热力图实现的完整实例
Jun 25 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
ES6中数组array新增方法实例总结
2017/11/07 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
go语言计算两个时间的时间差方法
2015/03/13 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python基础教程之while循环
2019/08/14 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Python json读写方式和字典相互转化
2020/04/18 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
人身损害赔偿协议书范本
2014/09/27 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
研究生导师推荐信
2015/03/25 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书