letter-combinations-of-a-phone-numberV1.py (938B)
1 class Solution: 2 def letterCombinations(self, digits: str) -> List[str]: 3 4 if digits == "": 5 return [] 6 7 lookup = { 8 2: ["a", "b", "c"], 9 3: ["d", "e", "f"], 10 4: ["g", "h", "i"], 11 5: ["j", "k", "l"], 12 6: ["m", "n", "o"], 13 7: ["p", "q", "r", "s"], 14 8: ["t", "u", "v"], 15 9: ["w", "x", "y", "z"], 16 } 17 opts = options([], lookup, digits, 0) 18 19 final_res = ["".join(opt) for opt in opts] 20 21 return final_res 22 23 24 def options(current, lookup, digits, index): 25 if index >= len(digits): 26 return [current] 27 28 current_opts = lookup[int(digits[index])] 29 ret_ls = [] 30 31 for opt in current_opts: 32 ls_cp = current.copy() 33 ls_cp.append(opt) 34 results = options(ls_cp, lookup, digits, index + 1) 35 for result in results: 36 ret_ls.append(result) 37 return ret_ls