leetcode 131 分割回文串 js

2021-10-22 23:09:02 字數 1169 閱讀 9033

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

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

示例 1:

輸入:s = "aab"

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

示例 2:

輸入:s = "a"

輸出:[["a"]]

解題思路:我們對題目進行分析,我們要將字串分割成若干個回文串,我們的求解思路是從第乙個字元開始劃分,當形成回文串後,將該回文串放入結果中,再對該下標後的字元進行判斷是否形成回文串,直至搜尋到最後乙個字元,如果到最後乙個字元還未形成回文串,則回溯。

使用刻意練習的思路思考:

1、遞迴樹和狀態變數。狀態變數為當前搜尋下標,新陣列。將當前搜尋下標前的回文串放入新陣列中。

2、遞迴出口:當搜尋下標到達最後,index ===len

3、選擇列表:for迴圈 從當前下標到最後,判斷當前下標到j之間是否形成回文串,若形成則temp.push,dfs(j+1,temp)

4、剪枝:無

5、撤回:pop

var

partition

=function

(s)}

vardfs

=function

(index, temp)

for(

let i = index; i < len; i++)}

}dfs(0

,);return res;};

console.

log(

partition

("aab"))

;

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時候只需要判斷兩個端點,其他時候還要判斷中間是否是回文子串。然後使用回溯...