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生成验证码图片代码分享
Jan 28 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
Django的分页器实例(paginator)
Dec 01 Python
python实现周期方波信号频谱图
Jul 21 Python
Python中super函数用法实例分析
Mar 18 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
python 实现绘制整齐的表格
Nov 18 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
python装饰器decorator介绍
2014/11/21 Python
python中defaultdict的用法详解
2017/06/07 Python
python使用KNN算法手写体识别
2018/02/01 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
初中生期末考试的自我评价
2013/12/17 职场文书
全民健身日活动方案
2014/01/29 职场文书
个人简历中自我评价
2014/02/11 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
企业法人授权委托书
2014/04/03 职场文书
挂靠协议书范本
2014/04/22 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
美丽的大脚观后感
2015/06/03 职场文书