LeetCode Palindrome Partitioning

来源:互联网 发布:360水滴破解软件 编辑:程序博客网 时间:2024/06/05 11:06

LeetCode解题之Palindrome Partitioning


原题

将一个字符串分割成若干个子字符串,使得子字符串都是回文字符串,要求列出所有的分割方案。

注意点:

例子:

输入: s = “aab”

输出: result = [[“a”, “a”, “b”], [“aa”, “b”]]

解题思路

采用了最简单的递归方法,将一个字符串分为前后两部分,如果第一部分是一个回文字符串,则对第二部分再次分割,不断递归,直到递归的终止条件——字符串为空为止;如果第一部分不是一个回文字符串,则尝试下一种分割方法。

AC源码

class Solution(object):    def partition(self, s):        """        :type s: str        :rtype: List[List[str]]        """        if not s:            return [[]]        result = []        for i in range(len(s)):            if self.isPalindrome(s[:i + 1]):                for r in self.partition(s[i + 1:]):                    result.append([s[:i + 1]] + r)        return result    def isPalindrome(self, s):        return s == s[::-1]if __name__ == "__main__":    assert Solution().partition("aab") == [        ["a", "a", "b"],        ["aa", "b"]    ]

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

1 0
原创粉丝点击