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装饰器初探(推荐)
Jul 21 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
python爬取个性签名的方法
Jun 17 Python
Python匿名函数及应用示例
Apr 09 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
python3 sqlite3限制条件查询的操作
Apr 07 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
prototype class详解
2006/09/07 Javascript
javascript编程起步(第六课)
2007/01/10 Javascript
JavaScript 中的事件教程
2007/04/05 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
python3图片文件批量重命名处理
2019/10/31 Python
浅析python中while循环和for循环
2019/11/19 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
法学院方阵解说词
2014/01/29 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
公司演讲稿开场白
2014/08/25 职场文书
2014年行政工作总结
2014/11/19 职场文书
高一数学教学反思
2016/02/18 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python