if input number is 231, possible words which can be formed are:
[ad, ae, af, bd, be, bf, cd, ce, cf]
Base Case: (only one digit)
1. perform lookup on digit
1. return append(partial_result, digit_lookup)
Recursive Rule: (more than one digit)
1. extract the largest digit
1. perform lookup on digit
1. recursive call for each corresponding letter
Tree:
Solution:
number_map = {
0 : "", 1 : "", 2 : "abc", 3 : "def",
4 : "ghi", 5 : "jkl", 6 : "mno",
7 : "pqrs", 8 : "tuv", 9 : "wxyz"
}
def telephoneCombinations(number: int):
# before helper
# 645 -> 456
sorted_number = int(sort(str(number))
return combinationHelper(sorted_number, "")
def combinationHelper(number: int, partial_result: str, result : [str]) -> [str]:
# lookup
keypad_letters = number_map[number]
# base case
if keypad_letters == "":
return result.append(partial_result)
# recursion rule
result: [str] = []
for letter in keypad_letters:
updated_number = int(number / 10)
updated_partial_result = letter + partial_result
result = combinationHelper(updated_number, updated_partial_result)
return result