1. 程式人生 > >131. 分割回文串(中等,字串)(12.25)

131. 分割回文串(中等,字串)(12.25)

給定一個字串 s,將 s 分割成一些子串,使每個子串都是迴文串。

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

示例:

輸入: "aab"
輸出:
[
  ["aa","b"],
  ["a","a","b"]
]
class Solution(object):
    def partition(self, s):
        """
        :type s: str
        :rtype: List[List[str]]
        """
        self.res = []
        self.temp = []
        def sub_partition(string):
            if string == string[::-1]:         #到了盡頭,加入到結果
                self.temp.append(string)
                self.res.append(copy.copy(self.temp))   #淺拷貝
                self.temp.pop()
            for i in range(1,len(string)):
                a = string[:i]
                if a == a[::-1]:
                    self.temp.append(a)
                    sub_partition(string[i:])
                    self.temp.pop()
        sub_partition(s)
        return self.res

執行用時: 112 ms, 在Palindrome Partitioning的Python提交中擊敗了91.78% 的使用者