Python3最长回文子串算法示例


Posted in Python onMarch 04, 2019

本文实例讲述了Python3最长回文子串算法。分享给大家供大家参考,具体如下:

1. 暴力法

思路:对每一个子串判断是否回文

class Solution:
  def longestPalindrome(self, s):
    """
    :type s: str
    :rtype: str
    """
    if len(s) == 1:
      return s
    re = s[0]
    for i in range(0,len(s)-1):
      for j in range(i+1,len(s)):
        sta = i
        end = j
        flag = True
        while sta < end:
          if s[sta] != s[end]:
            flag = False
            break
          sta += 1
          end -= 1
        if flag and j-i+1 > len(re):
          re = s[i:j+1]
    return re

提交结果:超出时间限制

2. 动态规划法

思路:

m[i][j]标记从第i个字符到第j个字符构成的子串是否回文,若回文值为True,否则为False.

初始状态 s[i][i] == True,其余值为False.

当 s[i] == s[j]  and m[i+1][j-1] == True 时,m[i][j] = True

class Solution:
  def longestPalindrome(self, s):
    """
    :type s: str
    :rtype: str
    """
    k = len(s)
    matrix = [[False for i in range(k)] for j in range(k)] 
    re = s[0:1]
    for i in range(k):
      for j in range(k):
        if i==j:
          matrix[i][j] = True
    for t in range(1,len(s)):       #分别考虑长度为2~len-1的子串(长串依赖短串的二维数组值)
      for i in range(k):
        j = i+t
        if j >= k: 
          break
        if i+1 <= j-1 and matrix[i+1][j-1]==True and s[i] == s[j]:
          matrix[i][j] = True
          if t+1 > len(re):
            re = s[i:j+1]
        elif i+1 == j and j-1 == i and s[i] == s[j]:
          matrix[i][j] = True
          if t+1 > len(re):
            re = s[i:j+1]
    return re

执行用时:8612 ms

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python兔子毒药问题实例分析
Mar 05 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
在python中使用xlrd获取合并单元格的方法
Dec 26 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
python 猴子补丁(monkey patch)
Jun 26 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
Python地图绘制实操详解
Mar 04 #Python
Python基于opencv实现的简单画板功能示例
Mar 04 #Python
python绘制漏斗图步骤详解
Mar 04 #Python
详解Python字典的操作
Mar 04 #Python
Python提取频域特征知识点浅析
Mar 04 #Python
python快排算法详解
Mar 04 #Python
Django 内置权限扩展案例详解
Mar 04 #Python
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP单链表的实现代码
2016/07/05 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
美容院营销方案
2014/03/05 职场文书
工作求职自荐信
2014/06/13 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
公司放假通知怎么写
2015/04/15 职场文书
三八节祝酒词
2015/08/11 职场文书
婚庆答谢词大全
2015/09/29 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书