美文网首页
131. Palindrome Partitioning

131. Palindrome Partitioning

作者: 葡萄肉多 | 来源:发表于2019-07-25 23:55 被阅读0次

    Given a string s, partition s such that every substring of the partition is a palindrome.
    Return all possible palindrome partitioning of s.
    Example:

    Input: "aab"
    Output:
    [
    ["aa","b"],
    ["a","a","b"]
    ]

    题意

    找到一个字符串所有可以构成回文的字串.

    思路

    回溯法。首先按一个字符切割,如果是回文,则存入path,再对字串同样操作,最后将path存入结果res;再按两个、三个……字符进行判断。

    代码

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

    相关文章

      网友评论

          本文标题:131. Palindrome Partitioning

          本文链接:https://www.haomeiwen.com/subject/ydhlrctx.html