題目描述:給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。
一開始寫了暴力搜尋法,結果超時了,就上網找了答案,發現乙個部落格寫的很好,推薦
classsolution(object):deflongestpalindrome(self, s):
""":types: str
:rtype: str
"""s ='#'+'#'.join(s)+'#'rl = [0]*len(s)
maxright = 0
pos = 0
maxlen = 0
foriinrange(len(s)):
ifi min(rl[2*pos-i], maxright-i)
else:
rl[i] = 1
whilei-rl[i]>=0
andi+rl[i]rl[i] += 1
ifrl[i] +i-1 >maxright:
maxright = rl[i]+i-1
pos = i
maxlen = max(maxlen,rl[i])
ifmaxlen == rl[i]:
maxlist = s[i-rl[i]+1:i+rl[i]]
returnmaxlist.replace("#",'')
其實不太明白為什麼回文子串只有自己的時候rl[i]=1......
最長回文子串 LeetCode 五 最長回文子串
題目 最長回文子串 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。題目解析 回文?當回文串長度為奇數時,比如 北京計程車租出京北 當回文串長度為偶數的時候,比如 1221 以上兩種情況有乙個共同的特點就是有乙個中心,那在 中如何表示中心呢?class solution ...
leetcode 最長回文子串
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 中心拓展法 由乙個中心點開始向兩邊拓展,檢測邊界,判斷兩個值是否相等,相等則繼續拓展下去,檢測邊界。1....
最長回文子串(LeetCode)
給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution def longestpalindrome self,s type s str r...