Skip to main content

17. Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/

Python

  • Time: O(4^N)

7 and 9 has 4 characters

  • Space: O(1)
class Solution:
MAP = {
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz',
}

def letterCombinations(self, digits: str) -> List[str]:
result = []

if not digits:
return result

def backtrack(word, i):
if len(word) == len(digits):
result.append(word)
return

for char in self.MAP[digits[i]]:
backtrack(word+char, i+1)

backtrack('', 0)

return result

Javascript

const phones = {
2: "abc",
3: "def",
4: "ghi",
5: "jkl",
6: "mno",
7: "pqrs",
8: "tuv",
9: "wxyz",
};

var letterCombinations = function (digits) {
if (!digits.length) return [];
const result = [];

var backtrack = function (start, digits, record = []) {
if (record.length === digits.length) {
result.push(record.join(""));
return;
}

for (let char of phones[digits[start]]) {
record.push(char);
backtrack(start + 1, digits, record);
record.pop();
}
};
backtrack(0, digits);

return result;
};