最大回文子串 (動態規劃)

2021-09-27 03:07:27 字數 428 閱讀 3938

建立乙個布林型的二維陣列dp,其中dp[i][j]表示字串第i到j是否為回文。那麼邊界值其實很清楚了,字串長度為1的都為true。狀態轉換如何設定呢?當字串i所在的字元=字串j所在的字元,且它的內部(dp[i+1][j-1])為回文,那麼dp[i][j]為true;又或者當字串i所在的字元=字串j所在的字元且j-i<3,那麼dp[i][j]為true。因為這樣的規律,我們要保證判斷dp[i][j]的時候dp[i+1][j-1]已經判斷,所以我們遍歷採用i降序j公升序的巢狀遍歷的方式。

public class main 

}else }}

return s.substring(left, right+1);

}public static void main(string args)

}

輸出:abgba

動態規劃 最長回文子串

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

動態規劃 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 本題有很多種解法,最簡單的暴力求解,但是會超時。下面分別說明動態規劃法和中心擴散法。解法一 動態規劃法...

最長回文子串 動態規劃

給出乙個字串s,求s的最長回文子串的長度。樣例輸入 patzjujztaccbcc 輸出 9 尋找二維動態規劃表示式dp i j 如果直接用dp i j 表示子符串從s i 到s j 的最長回文子串長度無法得出遞推表示式。令dp i j 表示s i 至s j 所表示的子串是否是回文子串,是則為1,不...