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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python发送email的3种方法
Apr 28 Python
Python守护进程用法实例分析
Jun 04 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 Python
Python实现简单的2048小游戏
Mar 01 Python
python异常中else的实例用法
Jun 15 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动态图像的创建
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
node.js require() 源码解读
2015/12/13 Javascript
JS面向对象编程详解
2016/03/06 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
AI人工智能 Python实现人机对话
2017/11/13 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Python类class参数self原理解析
2020/11/19 Python
在Python中实现字典反转案例
2020/12/05 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
人事助理岗位职责
2013/11/18 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
2015国庆节66周年标语
2015/07/30 职场文书