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统计文件行数示例分享
Feb 21 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
Python与Java间Socket通信实例代码
Mar 06 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
python组合无重复三位数的实例
Nov 13 Python
python实现KNN分类算法
Oct 16 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
Python调用shell命令常用方法(4种)
May 11 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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
php分页函数
2006/07/08 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php自动加载的两种实现方法
2010/06/21 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
javascript时区函数介绍
2012/09/14 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
简明 Python 基础学习教程
2007/02/08 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python实现音乐下载的统计
2018/06/20 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
html5与css3小应用
2013/04/03 HTML / CSS
什么是Rollback Segment
2013/04/22 面试题
影视广告专业求职信
2014/09/02 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
总经理检讨书范文
2015/02/16 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server