class Solution:
def letterCombinations(self, digits: str) -> list[str]:
res = []
digitToChar = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "qprs",
"8": "tuv",
"9": "wxyz",
def backtrack(i, curStr):
if len(curStr) == len(digits):
[Link](curStr)
return
for c in digitToChar[digits[i]]:
backtrack(i + 1, curStr + c)
if digits:
backtrack(0, "")
return res
class Solution:
def combinationSum(self, nums: list[int], target: int) -> list[list[int]]:
res = []
[Link]()
def dfs(i, cur, total):
if total == target:
[Link]([Link]())
return
for j in range(i, len(nums)):
if total + nums[j] > target:
return
[Link](nums[j])
dfs(j, cur, total + nums[j])
[Link]()
dfs(0, [], 0)
return res
class Solution:
def partition(self, s: str) -> list[list[str]]:
res, part = [], []
def dfs(i):
if i >= len(s):
[Link]([Link]())
return
for j in range(i, len(s)):
if [Link](s, i, j):
[Link](s[i : j + 1])
dfs(j + 1)
[Link]()
dfs(0)
return res
def isPali(self, s, l, r):
while l < r:
if s[l] != s[r]:
return False
l, r = l + 1, r - 1
return True
class Solution:
def permute(self, nums: list[int]) -> list[list[int]]:
if len(nums) == 0:
return [[]]
perms = [Link](nums[1:])
res = []
for p in perms:
for i in range(len(p) + 1):
p_copy = [Link]()
p_copy.insert(i, nums[0])
[Link](p_copy)
return res
class Solution:
def subsets(self, nums: list[int]) -> list[list[int]]:
res = []
subset = []
def create_subset(i):
if i == len(nums):
print(subset)
[Link](subset[:])
return
[Link](nums[i])
create_subset(i+1)
[Link]()
create_subset(i+1)
create_subset(0)
return res
nums = [1,2,3]
s=Solution()
res=[Link](nums)
print(nums)