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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
Python函数调用追踪实现代码
Nov 27 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
OpenCV-Python实现轮廓的特征值
Jun 09 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的autoload机制的实现解析
2012/09/15 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Django时区详解
2019/07/24 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
Python post请求实现代码实例
2020/02/28 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
毕业生自我鉴定
2013/12/04 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
协议书的格式
2014/04/23 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
培训通知书模板
2015/04/17 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技