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 encode和decode的妙用
Sep 02 Python
在Python中使用HTML模版的教程
Apr 29 Python
深入解析Python中的WSGI接口
May 11 Python
十个Python程序员易犯的错误
Dec 15 Python
Python 常用string函数详解
May 30 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
python读取和保存视频文件
Apr 16 Python
python 图像平移和旋转的实例
Jan 10 Python
3种python调用其他脚本的方法
Jan 06 Python
python绘制动态曲线教程
Feb 24 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
Python中的socket网络模块介绍
Jul 23 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.ini实现PHP文件上传功能
2014/11/27 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Python 多进程和数据传递的理解
2017/10/09 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python numpy存取文件的方式
2020/04/01 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
银行工作检查书范文
2014/01/31 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android