less than 1 minute read

17. Letter Combinations of a Phone Number

Difficulty: Medium

Related Topics: Hash Table, String, Backtracking

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example 1:

Input: digits = “23” Output: [“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]

Example 2:

Input: digits = “” Output: []

Example 3:

Input: digits = “2” Output: [“a”,”b”,”c”]

Code:

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        res = []
        if not digits:
            return res
        hashmap = {
            "2": "abc",
            "3": "def",
            "4": "ghi",
            "5": "jkl",
            "6": "mno",
            "7": "pqrs",
            "8": "tuv",
            "9": "wxyz"
        }
        res = []
        
        def backtracking(ind, letter):
            nonlocal res
            if ind == len(digits):
                res.append(letter)
                return      ## Return to break out from recursion

            num = digits[ind]
            chars = hashmap[num]
            for i in chars:
                backtracking(ind+1, letter+i)
        
        backtracking(0, "")
        return res