Palindrome partitioning

class Solution:
    def __init__(self):
        self.path = []
        self.res = []

    def backtrack(self, s, startIndex):
        if startIndex == len(s):
            self.res.append(self.path.copy())
            return None
        for i in range(startIndex, len(s)):
            if s[startIndex : i + 1] == s[startIndex : i + 1][::-1]:
                self.path.append(s[startIndex : i + 1])
                self.backtrack(s, i + 1)
                self.path.pop()

        return None

    def partition(self, s: str) -> List[List[str]]:
        self.backtrack(s, 0)
        return self.res

Palindrome Partitioning

Difficulty: Medium


Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s.

 

Example 1:

Input: s = "aab"
Output: [["a","a","b"],["aa","b"]]

Example 2:

Input: s = "a"
Output: [["a"]]

 

Constraints:

  • 1 <= s.length <= 16
  • s contains only lowercase English letters.