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登录Dr.com思路以及代码分享
Jun 25 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Python实现的矩阵类实例
Aug 22 Python
django2 快速安装指南分享
Jan 05 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
flask-restful使用总结
Dec 04 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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类
2008/04/09 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
详解vue express启动数据服务
2017/07/05 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
JS实现打字游戏
2019/12/17 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
Python 流程控制实例代码
2009/09/25 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
Python中调用其他程序的方式详解
2019/08/06 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
财务信息服务专业自荐书范文
2014/02/08 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
出国导师推荐信
2015/03/25 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
钢琴师观后感
2015/06/12 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
MySQL GRANT用户授权的实现
2021/06/18 MySQL