diff --git a/leetcode/17_letter_combinations_of_a_phone_number.py b/leetcode/17_letter_combinations_of_a_phone_number.py new file mode 100644 index 0000000..de6b40c --- /dev/null +++ b/leetcode/17_letter_combinations_of_a_phone_number.py @@ -0,0 +1,21 @@ +class Solution: + def letterCombinations(self, digits: str) -> List[str]: + if len(digits) == 0: + return [] + + options = { + '2': ('a', 'b', 'c'), + '3': ('d', 'e', 'f'), + '4': ('g', 'h', 'i'), + '5': ('j', 'k', 'l'), + '6': ('m', 'n', 'o'), + '7': ('p', 'q', 'r', 's'), + '8': ('t', 'u', 'v'), + '9': ('w', 'x', 'y', 'z') + } + + pools = (options[digit] for digit in digits) + result = [""] + for pool in pools: + result = [x+y for x in result for y in pool] + return result