力扣131 分割回文串

2021-09-21 06:43:47 字數 933 閱讀 5518

題目:

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。

返回 s 所有可能的分割方案。

示例:

輸入: 「aab」

輸出: [ [「aa」,「b」], [「a」,「a」,「b」] ]

分析:

有點向之前求所有子串問題,採用dp動態規劃演算法,只是多加上了判斷是否為回文串, 在"aab" 一例中可以依次分析如下分割是否滿足回文串特性:

a-a-b

a-ab

aa-b

aab這些分割組合是通過回溯演算法形成的

void getpartition(string s, vectortemp, vector>& result) 

else }}

}

每次從本次待分割子串的0/頭位置開始依次檢視長度(不超過子串長度)為1,2,3…的子串是否可以滿足回文串要求,若滿足,則繼續分割剩下的子串,直到子串長度為0分割完畢放入result中( result.push_back(temp)),並依次回溯(temp.pop_back()),檢視更長長度的子串是否滿足回文串要求。

總體**:

class solution 

void getpartition(string s, vectortemp, vector>& result)

else }}

}bool ispalindrome(string s)

}return true;

}};

22 / 22 個通過測試用例

狀態:通過

執行用時:168 ms

131分割回文串

回溯 res tmp def ispalindrome self,s str 判斷是否是回文串 return s s 1 def dfs self,s str param s param index 初始為0 return if 0 len s 遞迴終止條件,在res中儲存tmp的複製值 tmp.c...

131 分割回文串

題目鏈結 與93題 恢復ip位址思路一致 給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b class solution object def partition self,s type s str rtyp...

力扣每日一題 131 分割回文串

解題思路 解題 解題感悟 難度 中等 題目 給你乙個字串 s,請你將 s 分割成一些子串,使每個子串都是 回文串 返回 s 所有可能的分割方案。回文串 是正著讀和反著讀都一樣的字串。輸入 s aab 輸出 a a b aa b 輸入 s a 輸出 a 力扣 leetcode 鏈結 首先,回文串是從前...