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之wxPython应用实例
Sep 28 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python实现抢购IPhone手机
Feb 07 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
python实现超市扫码仪计费
May 30 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
Django使用Profile扩展User模块方式
May 14 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python实现信息管理系统
Jun 05 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php中static静态变量的使用方法详解
2010/06/04 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
php 定义404页面的实现代码
2012/11/19 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
php中fsockopen用法实例
2015/01/05 PHP
浅谈php://filter的妙用
2019/03/05 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
javascript操作数组详解
2014/12/17 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
python根据路径导入模块的方法
2014/09/30 Python
Python生成随机密码的方法
2017/06/16 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
tensorflow 模型权重导出实例
2020/01/24 Python
利用python进行文件操作
2020/12/04 Python
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
远程教育心得体会
2014/01/03 职场文书
劲霸男装广告词
2014/03/21 职场文书
材料物理专业求职信
2014/09/01 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
电工生产实习心得体会
2016/01/22 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
JavaScript canvas实现流星特效
2021/05/20 Javascript