Two methods dfs backtracking and dfs backtracking with dp
class Solution:def partition(self, s: str) -> List[List[str]]:#backtrackingdef dfs(start, s, curr, result):if start >= len(s):ans = [i for i in curr]result.append(ans)for end in range(start, len(s)):if isPalindrome(s, start, end):curr.append(s[start:end+1])dfs(end+1, s, curr, result)curr.pop()def isPalindrome(s, start, end):while start <= end and s[start] == s[end]:start += 1end -= 1if end - start <= 0:return Trueelse:return Falseif not s:return []result = []dfs(0, s, [], result)return result
