LeetCode-131、分割回文串-中等

LeetCode-131、分割回文串-中等

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回 s 所有可能的分割方案。

示例:

输入: "aab"
输出:
[
  ["aa","b"],
  ["a","a","b"]
]

代码:

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        stack = [[s[0]]]
        for i in range(1, len(s)):
            L = len(stack)
            for j in range(L):
                cur = stack[j]
                if s[i] == cur[-1]:
                    stack.append(cur[:-1] + [cur[-1] + s[i]])
                if len(cur) > 1 and s[i] == cur[-2]:
                    stack.append(cur[:-2] + [cur[-2] + cur[-1] + s[i]])
                cur.append(s[i])
        return stack

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        def func(cur, s):
            if not s:
                res.append(cur)
                return
            for i in range(len(s)):
                if s[:i+1] == s[i::-1]:
                    func(cur+[s[:i+1]], s[i+1:])
        res = []
        func([], s)
        return res

发布了209 篇原创文章 · 获赞 48 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/clover_my/article/details/104696404