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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
深度剖析使用python抓取网页正文的源码
Jun 11 Python
python 循环while和for in简单实例
Aug 16 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
利用python在excel中画图的实现方法
Mar 17 Python
python实现超级玛丽游戏
Mar 18 Python
python能在浏览器能运行吗
Jun 17 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 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下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
javascript 解析url的search方法
2010/02/09 Javascript
JavaScript类库D
2010/10/24 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
Angular2库初探
2017/03/01 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python正则捕获操作示例
2017/08/19 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
Python3匿名函数用法示例
2018/07/25 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
C++面试题:关于链表和指针
2013/06/05 面试题
会计电算化应届生自荐信
2014/02/25 职场文书
内衣营销方案
2014/03/15 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
中秋节主题班会
2015/08/14 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis