diff --git a/NeetCode/letter-combinations-of-a-phone-number/step1.py b/NeetCode/letter-combinations-of-a-phone-number/step1.py new file mode 100644 index 0000000..050f954 --- /dev/null +++ b/NeetCode/letter-combinations-of-a-phone-number/step1.py @@ -0,0 +1,30 @@ +class Solution: + def letterCombinations(self, digits: str) -> List[str]: + if not digits: + return [] + + digits_to_letters = { + "2": "abc", + "3": "def", + "4": "ghi", + "5": "jkl", + "6": "mno", + "7": "pqrs", + "8": "tuv", + "9": "wxyz", + } + res = [] + combs = [] + + def dfs(index): + if index == len(digits): + res.append("".join(combs)) + return + + for c in digits_to_letters[digits[index]]: + combs.append(c) + dfs(index + 1) + combs.pop() + + dfs(0) + return res diff --git a/NeetCode/letter-combinations-of-a-phone-number/step2.py b/NeetCode/letter-combinations-of-a-phone-number/step2.py new file mode 100644 index 0000000..a86f8b0 --- /dev/null +++ b/NeetCode/letter-combinations-of-a-phone-number/step2.py @@ -0,0 +1,28 @@ +class Solution: + def letterCombinations(self, digits: str) -> List[str]: + digit_to_letters = { + "2": "abc", + "3": "def", + "4": "ghi", + "5": "jkl", + "6": "mno", + "7": "pqrs", + "8": "tuv", + "9": "wxyz", + } + res = [] + combs = [] + + def dfs(index): + if index == len(digits): + res.append("".join(combs)) + return + + for c in digit_to_letters[digits[index]]: + combs.append(c) + dfs(index + 1) + combs.pop() + + if digits: + dfs(0) + return res