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中join 和 split详解(推荐)
Jun 30 Python
浅谈function(函数)中的动态参数
Apr 30 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Django 开发环境配置过程详解
Jul 18 Python
python可视化实现KNN算法
Oct 16 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
Python如何telnet到网络设备
Feb 18 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP中显示格式化的用户输入
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
php bootstrap实现简单登录
2016/03/08 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python实现C4.5决策树算法
2018/08/29 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
数学系毕业生求职信
2014/05/29 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
MySQL插入数据与查询数据
2022/03/25 MySQL