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...