Leetcode 5 最長回文串

2021-10-06 21:06:23 字數 1525 閱讀 1589

解題思想

1.中心擴充套件法

從字串中心分別往左右兩端移動, while l>=0 r易混點: 回文串的起始值 = i-(迴圈中回文串的長度-1)//2 看不懂找數帶入即可

class

solution

:def

longestpalindrome

(self, s:

str)

->

str:

n =len(s)

defgetlen

(l,r)

:while l>=

0and r== s[r]

: l -=

1 r +=

1return r-l-

1 start =

0 length =

0for i in

range

(n):

cur =

max(getlen(i,i)

, getlen(i,i+1)

)if cur <=length:

continue

length = cur

start = i -

(cur-1)

//2return s[start:start+length]

2.動態規劃法

動態規劃經典題目:斐波那契數列,揹包問題

動態規劃常用來解決 重疊子問題

一般遞迴可解決的,用動態規劃會減小複雜度

class

solution

:def

longestpalindrome

(self, s:

str)

->

str:

n=len(s)

dp =[[

0]*n for _ in

range

(n)]

ans =

""for l in

range

(n):

for i in

range

(n):

j = i + l

if j >=

len(s)

:break

if l ==0:

dp[i]

[j]=

true

elif l ==1:

dp[i]

[j]=

(s[i]

== s[j]

)else

: dp[i]

[j]=

(dp[i +1]

[j -1]

and s[i]

== s[j]

)if dp [i]

[j]and l +

1>

len(ans)

: ans = s[i:j+1]

return ans

LeetCode5 最長回文串

include include include include include include using namespace std ifndef solution h define solution h 思路 從回文串的對稱點開始,依次向左向右比較,不相同的時候停止遍歷,直到找出最大的長度的回文...

LeetCode 5 最長回文串

目錄 1.題目描述 2.解決方案 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 方法一 動態規劃 演算法 用二位陣列來標記字串從下標 i 到下標 j 是否為回...

LeetCode5最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...