题目描述
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
示例 1:
输入:s = “aab”
输出:[[“a”,”a”,”b”],[“aa”,”b”]]
示例 2:
输入:s = “a”
输出:[[“a”]]
提示:
- 1 <= s.length <= 16
- s 仅由小写英文字母组成
解题思路
这道题使用回溯算法来解决。核心思路是:
- 对于每个位置,有两种选择:将当前字符加入到前一个子串中,或者开始一个新的子串
- 当遍历完整个字符串时,检查所有子串是否都是回文串
- 如果是,则将当前分割方案加入结果集
算法实现
1 | // isPalindrome 检查字节切片是否为回文 |