Leetcode No.131 分割回文串(DFS)

Posted AI算法攻城狮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode No.131 分割回文串(DFS)相关的知识,希望对你有一定的参考价值。

一、题目描述

 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:
输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:
输入:s = "a"
输出:[["a"]]

提示:
1 <= s.length <= 16
s 仅由小写英文字母组成

二、解题思路

回溯 + 动态规划预处理

由于需要求出字符串 s 的所有分割方案,因此我们考虑使用搜索 + 回溯的方法枚举所有可能的分割方法并进行判断。

假设我们当前搜索到字符串的第 i 个字符,且 s[0..i−1] 位置的所有字符已经被分割成若干个回文串,并且分割结果被放入了答案数组 ans 中,那么我们就需要枚举下一个回文串的右边界 j,使得 s[i..j] 是一个回文串。

因此,我们可以从 i 开始,从小到大依次枚举 j。对于当前枚举的 j 值,我们使用双指针的方法判断 s[i..j] 是否为回文串:如果 s[i..j]是回文串,那么就将其加入答案数组ans 中,并以j+1 作为新的 i 进行下一层搜索,并在未来的回溯时将 s[i..j] 从ans 中移除。

如果我们已经搜索完了字符串的最后一个字符,那么就找到了一种满足要求的分割方法。

细节

当我们在判断 s[i..j] 是否为回文串时&#x

以上是关于Leetcode No.131 分割回文串(DFS)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode中等131分割回文串

131. 分割回文串

递归DFS感觉好难理解啊

131. 分割回文串

LeetCode-131-分割回文串

LeetCode 0131. 分割回文串