一、题目
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
回文串 是正着读和反着读都一样的字符串。
二、回溯法分析
本题需要解决两个问题:
(1)切割问题,有不同的切割方式
(2)判断回文
其实切割问题,类似组合问题
例如对于字符串abcd
组合问题:选取一个a之后,在bcd中再去选取第二个,选取b之后在cd中在选取第三个…
切割问题:切割一个a之后,在bcd中再去切割第二段,切割b之后在cd中在切割第三段…
所以切割问题也可以抽象为一颗树形结构:
递归用来纵向遍历,for循环用来横向遍历,切割线(就是图中的红线)切割到字符串的结尾位置,说明找到了一个切割方法
所以这个切割过程和组合问题类似,也可以看成有多少种组合方式,判断这种组合方式符不符合要求,符合的话就记录。
(1)确