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

2021-10-21 11:32:47 字數 1268 閱讀 8179

解題思路

解題**

解題感悟

難度: 中等

題目

給你乙個字串 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...