131. Palindrome Partitioning

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)