LeeCode筆記 5 最長回文子串

2021-09-27 03:51:12 字數 614 閱讀 3212

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

示例 1:

輸入: 「babad」

輸出: 「bab」

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

示例 2:

輸入: 「cbbd」

輸出: 「bb」

使用動態規劃,dp[i][j]是從j到i的子串是否是回文串(值為true或false),dp[i][i]肯定是回文串,初始化為true;j從i-1遍歷到0,如果s[j]==s[i]且dp[i-1][j+1]為true(相當於乙個回文串兩端加了兩個相同的字母,所以肯定依然是回文串),如此遍歷到結束。

// an highlighted block

class solution

if(dp[i]

[j]&&

((i - j)

>

(right - left)))

}}return s.

substr

(left,

(right - left +1)

);}}

;

leecode最長回文子串

基本上都會想到中心擴散,但是這個中心擴散有個奇數偶數的問題,所以優化了下,借用了部分馬拉車演算法的思想 解決問題,記憶體消耗還可以優化。初版解決問題為先。class solution str tmp echo str for i 0 i strlen str i return this format...

leecode 5 最長回文子串 遞迴解法

動態規劃,本質上就是 帶備忘錄的遞迴的計算過程。遞迴過程為 自頂向下的問題拆解和自底向上的問題計算。迭代形式的動態規劃,略過問題拆解,直接計算,能節省一定的時空。本題中,因遞迴法的時空效率太差 擊敗5 需進一步優化 改為迭代形式 分析過程 遞迴過程 暴力遞迴窮舉 備忘錄優化 構造遞迴遍歷 二叉樹遍歷...

leecode刷題之第5題 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 從中間向兩邊遍歷比暴力破解法更好,當兩邊的字母不相同時會終止此位置的遍歷,所以速度更快。class s...