LeetCode 131 分割回文串

2021-10-21 13:33:32 字數 894 閱讀 1332

題目鏈結

給你乙個字串 s,請你將 s 分割成一些子串,使每個子串都是 回文串 。返回 s 所有可能的分割方案。

回文串是正著讀和反著讀都一樣的字串。

輸入:s = "aab"

輸出:[["a","a","b"],["aa","b"]]

輸入:s = "a"

輸出:[["a"]]

暴力所有分隔符,顯然對乙個長為 n

nn 的字串最多可以劃分成 n

nn 個子串,那麼我們就可以暴力所有的可能,複雜度 o(2

n)

o(2^n)

o(2n)~

注意最後乙個位置必須要切,拿樣例 1 舉例:

aab

1: aab|

2: ab|b|

3: a|ab|

4: a|a|b|

還有乙個細節,因為位數固定了,但是小數的二進位制位數比大數小,所以小數的二進位制數要在前面補 0,ac**如下:

class

solution

vector>

partition

(string s)};

else

while

(div.

size()

< n -

1) div =

'0'+ div;

div +

='1'

;for

(int j =

0; j < n; j++)}

if(flag) ans.

emplace_back

(v);

}return ans;}}

};

Leetcode131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b public list partition string s partition s,0 new arraylist res return res index...

LeetCode 131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 思路 回溯法 注意回溯的位置 class solution object def partition self,s type s str rtype list...

LeetCode 131 分割回文串

返回 s 所有可能的分割方案。分析 首先要用動態規劃來標記出回文子串的位置,dp i j true表示字串i到j是回文。因此動態規劃判斷時候是用的 dp i j s i s j len 3 dp i 1 j 1 表示當len 3時候只需要判斷兩個端點,其他時候還要判斷中間是否是回文子串。然後使用回溯...