動態規劃學習 leetcode5 最長回文子串

2021-10-06 20:57:51 字數 1115 閱讀 8791

題目:

解析:

狀態轉移方程:dp[i][j]=(dp[i+1][j-1])&&(s[i]==s[j])

(從短串向長串進行轉移,注意迴圈順序)

初始狀態:dp[i][i]=1

dp[i][i+1]=(s[i]==s[i+1])

解答:

class

solution

:def

longestpalindrome

(self, s:

str)

->

str:

n =len(s)

dp =[[

false

]* n for _ in

range

(n)]

ans =

""# 列舉子串的長度 l+1

for l in

range

(n):

# 設列舉子串的起始位置 i,則列舉子串的結束位置為j=i+l

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 最長回文子串 動態規劃

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路 為什麼說這道題可以用動態規劃呢?這道題是求最長回文子串,是求極值,那麼這就可以用動態規劃解題。想到動規,就...

LeetCode 5 最長回文子串 動態規劃)

1.動態規劃 時間複雜度o n 2 空間複雜度o n 2 大體思路就是 如果 aba 是回文的 那麼 aabaa 也一定是回文的 因為就是在兩邊加上了相同的 所以從最小的 a aa aba 這種開始 逐漸擴張 找到最大的乙個 class solution def longestpalindrome ...

LeetCode 5 最長回文子串(動態規劃)

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb leetcode 1216.驗證回文字串 iii dp leetcode 1312.讓字串成為回文串的...