题目如下:
解题思路:一般来说,对于题目要求返回所有可能的结果的集合的情况,对算法时间复杂度的要求都不会太复杂。本题直接穷举遍历即可。
代码如下:
class Solution(object): def isPalindrom(self,s): return s == s[::-1]def isFull(self,vl,s): r = '' for i in vl: r += i return r == s def partition(self, s): """ :type s: str :rtype: List[List[str]] """ queue = [] subs = '' for i, v in enumerate(s): subs += v if self.isPalindrom(subs) == True: queue.append(([subs],i)) res = [] while len(queue) > 0: vl,inx = queue.pop(0) if self.isFull(vl,s) == True: res.append(vl) continue subs = '' for i in range(inx+1,len(s)): subs += s[i] if self.isPalindrom(subs) == True: tl = vl[:] tl.append(subs) queue.append((tl,i)) return res