欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3最長回文子串算法示例

 更新時間:2019年03月04日 11:12:38   作者:gxnustc  
這篇文章主要介紹了Python3最長回文子串算法,結(jié)合實例形式分析了暴力算法及動態(tài)規(guī)劃算法判斷最長回文子串的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了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

提交結(jié)果:超出時間限制

2. 動態(tài)規(guī)劃法

思路:

m[i][j]標記從第i個字符到第j個字符構(gòu)成的子串是否回文,若回文值為True,否則為False.

初始狀態(tài) 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的子串(長串依賴短串的二維數(shù)組值)
      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

執(zhí)行用時:8612 ms

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 詳解python 拆包可迭代數(shù)據(jù)如tuple, list

    詳解python 拆包可迭代數(shù)據(jù)如tuple, list

    拆包是指將一個結(jié)構(gòu)中的數(shù)據(jù)拆分為多個單獨變量中。下面通過本文給大家介紹python 拆包可迭代數(shù)據(jù)如tuple, list的相關(guān)資料,需要的朋友參考下吧
    2017-12-12
  • 解決Python安裝后pip不能用的問題

    解決Python安裝后pip不能用的問題

    今天小編就為大家分享一篇解決Python安裝后pip不能用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python使用webdriver爬取微信公眾號

    python使用webdriver爬取微信公眾號

    這篇文章主要為大家詳細介紹了python使用webdriver爬取微信公眾號信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python類和實例的屬性機制原理詳解

    Python類和實例的屬性機制原理詳解

    這篇文章主要介紹了Python類和實例的屬性機制原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Python上下文管理器深入講解

    Python上下文管理器深入講解

    Python有三大神器,一個是裝飾器,一個是迭代器、生成器,最后一個就是今天文章的主角 -- 「上下文管理器」。上下文管理器在日常開發(fā)中的作用是非常大的,可能有些人用到了也沒有意識到這一點
    2022-12-12
  • Python3 re.search()方法的具體使用

    Python3 re.search()方法的具體使用

    本文主要介紹了Python3 re.search()方法的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • python連接mysql并提交mysql事務(wù)示例

    python連接mysql并提交mysql事務(wù)示例

    這篇文章主要介紹了python連接mysql并提交mysql事務(wù)的示例,需要的朋友可以參考下
    2014-03-03
  • Python實現(xiàn)csv文件(點表和線表)轉(zhuǎn)換為shapefile文件的方法

    Python實現(xiàn)csv文件(點表和線表)轉(zhuǎn)換為shapefile文件的方法

    這篇文章主要介紹了Python實現(xiàn)csv文件(點表和線表)轉(zhuǎn)換為shapefile文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Python中os.path用法分析

    Python中os.path用法分析

    這篇文章主要介紹了Python中os.path用法,實例分析了os.path的各種常用方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • Pygame游戲開發(fā)之太空射擊實戰(zhàn)敵人精靈篇

    Pygame游戲開發(fā)之太空射擊實戰(zhàn)敵人精靈篇

    相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學習中回顧過往展望未來,下面開始講解敵人精靈的使用
    2022-08-08

最新評論