給定乙個字串 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...