LeetCode 最長回文子串 python

2021-10-23 11:33:29 字數 1182 閱讀 1171

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例1輸入: 「babad」

輸出: 「bab」

注意: 「aba」 也是乙個有效答案。

示例2輸入: 「cbbd」

輸出: 「bb」

解題思路

中心擴充套件法判斷是否符合回文要求,分兩種情況,具體如示例1和2

**實現

class

solution

(object):

deflongestpalindrome

(self, s)

:def

find

(s, left, right)

:while left>=

0and right<

len(s)

and s[left]

==s[right]

: left -=

1 right +=

1return right - left -

1#因為判斷是否滿足條件時left多減了1,所以計算長度需要減1

start =

0 end =

0for i in

range

(len

(s))

: len1 = find(s, i, i)

len2 = find(s, i, i+1)

max_len =

max(len1, len2)

if max_len > end - start +1:

# 長度為奇數

if max_len %2==

1:start =

int(i -

(max_len-1)

/2) end =

int(i +

(max_len-1)

/2)# 長度為偶數

else

: start =

int(i +

1- max_len /2)

end =

int(i + max_len /2)

return s[start:end+

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