【题目】:
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"] ]
【参考资料】:
【Python代码】:回溯,注意移除最后一个元素要用pop(),不要用remove(),不然会出问题
class Solution(object):
def partition(self, s):
"""
:type s: str
:rtype: List[List[str]]
"""
result = [[]]
if not s:
return result
self.helper(result, [], s)
return result[1:]
def helper(self, result, lt, s):
if len(s) == 0:
result.append(lt[:])
for i in range(len(s)):
if self.isPalindrome(s[0:i+1]):
lt.append(s[0:i+1])
self.helper(result, lt, s[i + 1:])
lt.pop()
def isPalindrome(self,s):
left = 0
right = len(s) - 1
while left < right:
if s[left] != s[right]:
return False
else:
left += 1
right -= 1
return True