Faaez Razeen

Palindrome Partitioning

  • 2 min read
  • LC-Medium
  • Backtracking

3 years ago

Solution

TimeSpaceExplanation
O(n * 2^n)O(n)O(n) for checking if string is a palindrome, and O(2 ^ n) because there are O(2^n) nodes in the subtree above
def is_palindrome(self, s, l, r): while l < r: if s[l] != s[r]: return False l += 1 r -= 1 return True def partition(self, s: str) -> List[List[str]]: ans, part = [], [] def dfs(i): if i >= len(s): ans.append(part[:]) return for j in range(i, len(s)): if self.is_palindrome(s, i, j): part.append(s[i:j+1]) dfs(j + 1) part.pop() dfs(0) return ans