leetcode @python 131. Palindrome Partitioning

题目链接

https://leetcode.com/problems/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.

For example, given s = "aab",
Return

[
["aa","b"],
["a","a","b"]
]

题目大意

将字符串进行切割,使得每个字符都是回文子串,返回所有可能的切割方式

解题思路

使用dfs,使用递归的方式,对字符串进行切割

代码

class Solution(object):
    def partition(self, s):
        """
        :type s: str
        :rtype: List[List[str]]
        """
        Solution.ans = []
        self.dfs(s, [])
        return Solution.ans

    def isPalindrome(self, s):
        for i in range(len(s)):
            if s[i] != s[len(s) - i - 1]:
                return False
        return True

    def dfs(self, s, stringlist):
        if len(s) == 0:
            Solution.ans.append(stringlist)
        for i in range(1, len(s) + 1):
            if self.isPalindrome(s[:i]):
                self.dfs(s[i:], stringlist + [s[:i]])
posted @ 2016-04-08 09:41  slurm  阅读(260)  评论(0编辑  收藏  举报