python練習之最長回文子串

2021-09-24 04:03:54 字數 1056 閱讀 7765

python練習之最長回文子串

首先是一種非常非常簡練的演算法,但是時間複雜度有點高啊,空間複雜度貌似還ok?ps:資料結構方面還是差一點啊,得著重提高一下

class solution:

def longestpalindrome(self, s: str) -> str:

if len(s) <= 1:

return s

max_s=s

for length in range(len(s),0,-1):

for i in range(0,len(s)-length+1):

max_s=s[i:i+length]

if max_s==max_s[::-1]:

#又是忘了兩個等號,低階錯誤。。。

return max_s

下一步,中心擴散一下,省點時間嘛,畢竟是個對稱的東西

class solution:

res = ''

maxlen = 0

def longestpalindrome(self, s: str) -> str:

if len(s) <= 1:

return s

for i in range(len(s)):

self.compare(s,i,i)

self.compare(s,i,i+1)

return self.res

def compare(self, s, left, right):

while left >= 0 and right < len(s) and s[left] == s[right]:

if right-left+1 > self.maxlen:

#必須要加上self啊

self.maxlen = right-left+1

self.res = s[left:right+1]

#試一試,maxlen和res的前面不加self行不行 並且,python不需要寫end

left -= 1

right += 1

LintCode之最長回文子串

給出乙個字串 假設長度最長為1000 求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。樣例 給出字串 abcdzdcab 它的最長回文子串為 cdzdc public class solution if s.length 1 stringbuffer sb new stringbuff...

Leetcode之最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路很簡單,首先想到若情況為回文字串奇數個字元時,中間的字元為軸。比較兩邊的字元是否相同。當回文串字元...

動態規劃之最長回文子串

問題 給出乙個字串s,求s的最長回文子串的長度。樣例 字串 patzjujztaccbcc 的最長回文子串為 atzjujzta 長度為9。還是先看暴力解法 列舉子串的兩個端點i和j,判斷在 i,j 區間內的子串是否回文。從複雜度上來看,列舉端點需要0 n2 判斷回文需要0 n 因此總複雜度是o n...