一、131.分割回文串
1.题目描述
给你一个字符串 s,请你将 :分割成一些子串,使每个子串都是 回文串。返回 s所有可能的分割方案。
2.代码
3.思路
首先构建列表,一个二维列表存储满足所有条件的分割方案,一个一维列表存储当前的分割方案。
partition
方法是对外的接口,主要调用下面的backtracking
方法,backtracking
方法开始回溯搜索,初始的起始位置 start
为 0,表示从字符串的第一个字符开始尝试分割,同时传入一个空的 StringBuilder
用于构建子串。
backtracking
方法
- 判断终止条件:遍历完整个字符串,此时
cur
中存储的分割方案满足每个子串都是回文串的条件,将cur
的副本添加到res
列表中,然后返回,结束当前递归分支。 - 遍历字符串:不断将字符添加到
StringBuilder,
调用check
方法检查当前构建的子串是否为回文串。将其添加到cur
列表中,表示选择该子串作为当前分割方案的一部分。递归调用backtracking
方法,继续尝试从下一个位置开始分割字符串,同时传入一个新的StringBuilder
用于构建下一个子串。递归调用返回后,撤销之前的选择,将cur
列表中最后一个元素移除。