179 - 131 分割回文串
题目
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]
解答
感觉可以回溯。算出结果,然后验证下是不是回文
https://leetcode-cn.com/problems/palindrome-partitioning/solution/dong-tai-gui-hua-dfs-by-powcai/
方法还是需要两个变量:剩余选择+已走路径

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        res = []
        def backtrack(s, tmp): # s是剩余选择,tmp是已走路径
            if not s:          # 没有选择了,就推进结果里面
                res.append(tmp)
                return
            for i in range(1, len(s)+1):
                if s[:i] == s[:i][::-1]:   # 就是判断s[:i]是不是回文,[::-1]查了才知道还能这么玩,这下都不用回滚选择了。。
                    backtrack(s[i:], tmp+[s[:i]])
        backtrack(s, []) # 两个变量都是通过参数传递,就不用新建
        return resRuntime: 80 ms, faster than 79.14% of Python3 online submissions for Palindrome Partitioning.
Memory Usage: 13 MB, less than 100.00% of Python3 online submissions for Palindrome Partitioning.
Last updated
Was this helpful?