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

2021-09-20 21:34:31 字數 879 閱讀 8956

給出乙個字串s, 求s 的最長回文子串(連續)的長度。

輸入:patzjujztaccbcc

輸出:9

最優子結構:如atzjujzta是回文子串,那麼它字串tzjujzt一定是回文子串,且長度等於tzjujzt的長度+2;

重複子問題:如求atzjujzta和tzjujzt的長度,都會用到juj的長度

狀態轉移公式

dp[i][j] 表示從字元a[i]到a[j]的回文串長度,如果不是則為0

初始值 0

邊界:dp[i][i] = 1

dp[i][i + 1] = (s[i] = s[i + 1])? 2: 0 。

公式dp[i][j] = dp[i + 1][j - 1 ]+2, s[i]=s[j]

最優解:max(dp[0][0]…dp[n][n])

時間複雜度:o(n2)

注意迴圈條件(串長從3到n)

動態規劃 最長回文字串

題目 請從乙個已知的字串中尋找最長回文字串 解法1 動態規劃 回文字串的子串也是回文,比如p i,j 表示以i開始以j結束的子串 是回文字串,那麼p i 1,j 1 也是回文字串。這樣最長回文子串就能分解成一系列子問題了。這樣需要額外的空間o n 2 演算法複雜度也是o n 2 狀態方程和轉移方程 ...

5 最長回文子串 動態規劃

題目描述 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 方法1 中心擴散 主要思路 1 遍歷字串的每乙個位置,以該位置作為基點,向兩端進行擴充套件,...

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

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