Python3最长回文子串算法示例

yipeiwu_com5年前Python基础

本文实例讲述了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加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

python获取酷狗音乐top500的下载地址 MP3格式

python获取酷狗音乐top500的下载地址 MP3格式

下面先给大家介绍下python获取酷狗音乐top500的下载地址 MP3格式,具体代码如下所示: # -*- coding: utf-8 -*- # @Time : 2018/4/1...

python支持断点续传的多线程下载示例

复制代码 代码如下:#! /usr/bin/env python#coding=utf-8 from __future__ import unicode_literals from mu...

Python 转换RGB颜色值的示例代码

题目:转换RBG颜色值 我们知道在网页中的颜色值设置都是用16进制的RGB来表示的,比如#FFFFFF,表示R:255,G:255,B:255的白色。 现在请设计一个函数可以转换RGB...

用Python实现web端用户登录和注册功能的教程

用Python实现web端用户登录和注册功能的教程

用户管理是绝大部分Web网站都需要解决的问题。用户管理涉及到用户注册和登录。 用户注册相对简单,我们可以先通过API把用户注册这个功能实现了: _RE_MD5 = re.compil...

django 快速启动数据库客户端程序的方法示例

django 快速启动数据库客户端程序的方法示例

实际工作经历中,免不了有时候需要连接数据库进行问题排查分析的场景,之前一直习惯通过 mysql -uxxx -hxxxx -P1234 ... 这样的方式来启动命令行形式的 MySQL...