最長回文串 動態規劃)

2021-10-01 20:03:32 字數 680 閱讀 4920

半對

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

示例 1:

輸入: "babad"

輸出: "bab"

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

示例 2:

輸入: "cbbd"

輸出: "bb"

思路一:翻轉字串法。

1.將整個字串反轉,然後判斷原始的字串是否在反轉的字串**現。

2.只是出現還不夠,還要驗證該字串是否是回文的。

class solution 

}else

break;}}

return res;

}};

思路二:動態規劃法.

1.定義乙個(len, len)的二維陣列,陣列的(i,i)是1,因為單個字元是回文字元。

2.如果s[i]==s[i+1],則是兩個連續的字元,也構成回文。

3.從長度為三開始掃瞄,如果s[i]==s[j]&&d[i+1][j-1]==1,則構成乙個新的回文字串。

class solution 

}for (int l=3; l<=len; l++)}}

return s.substr(start,max);

}};

動態規劃 最長回文字串

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

動態規劃 最長回文子串

動態規劃 最長回文子串 題目描述 給出乙個字串s,求s的最長回文子串的長度 樣例 字串 patzjujztaccbcc 的最長回文子串為 atzjujzta 長度為9。動態規劃思想 令dp i j 表示s i 至s j 所表示的子串是否是回文子串,是則為1,不是為0。這樣根據s i 是否等於s j ...

動態規劃之最長回文串

dp i j 表示 以s i 開始s j 結尾的回文串的長度。如果這個字串不是回文串,讓dp i j 0 顯然,j i,只需往dp填j i的部分即可。dp i j 的遞推公式可以這麼表述 1 首先對dp的對角線元素初始化為1,也就是當i j時,dp i j 1。這很顯然,每個單獨的字元其實就是個長度...