解題思路
解題**
解題感悟
難度: 中等
題目:
給你乙個字串 s,請你將 s 分割成一些子串,使每個子串都是 回文串 。返回 s 所有可能的分割方案。
回文串 是正著讀和反著讀都一樣的字串。
輸入:s = "aab"
輸出:[["a","a","b"],["aa","b"]]
輸入:s = "a"
輸出:[["a"]]
**:力扣(leetcode)
鏈結:
首先,回文串是從前往後讀和從後往前讀都一致的字串,比如:aba、a、aa、abcba等等。判斷是否有回文串有很多方法,而我使用的方法就是:迴圈遍歷字串s的元素,如果遍歷中的任意i,s[i] == s[len-i-1],那麼該字串為回文串。
而由題意,需要求出s中子串為回文串的所有可能情況,也就是說,子串都為回文串,且需要返回所有的可能情況。
因此,可以想象,需要分割s並判斷是否為回文串,如果是則將剩餘子串繼續相同的操作,那麼很容易想到利用遞迴演算法層層剖析。也就是回溯演算法,類似於樹的結構,逐層分支判斷是否為回文串。
//遞迴遍歷
void
dfs(string s,
bool islast)
for(
int i =
0; i < len; i++)}
} vector>
partition
(string s)
};對於該類題目,其實我剛開始做的時候也並非一帆風順,剛開始遞迴時就是出現種類缺失、元素缺失等問題。。。大概率是自己水平有限,對遞迴理解不夠透徹吧。當然經過除錯、看**理清結構後,才寫出通過的**。相比較官方的**感覺自己的很low,當然自己做出來的,心情還是很不錯的。加油!
力扣131 分割回文串
題目 給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 分析 有點向之前求所有子串問題,採用dp動態規劃演算法,只是多加上了判斷是否為回文串,在 aab 一例中可以依次分析如下分割是否滿足回文串特性 a a ...
leetcode每日一題 131 分割回文串
題目 給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。解答 法一 class solution def partition self,s str list list str res ifnot s return res defbacktrack last...
21 3 8 力扣每日刷題 分割回文串
給你乙個字串 s,請你將 s 分割成一些子串,使每個子串都是回文。返回符合要求的 最少分割次數 示例 1 輸入 s aab 輸出 1 解釋 只需一次分割就可將 s 分割成 aa b 這樣兩個回文子串。示例 2 輸入 s a 輸出 0 示例 3 輸入 s ab 輸出 1 1 s.length 2000...