Letter combinations of a phone number

class Solution:
    def __init__(self):
        self.letters = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", 
            "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"}
        self.res = []
        self.path = []
    def backtrack(self, digits, index):
        if index == len(digits):
            if len(self.path) != 0:
                self.res.append("".join(self.path))
            return None

        num = digits[index]
        for i in self.letters[num]:
            self.path.append(i)
            self.backtrack(digits, index + 1)
            self.path.pop()

        return None

    def letterCombinations(self, digits: str) -> List[str]:
        index = 0
        self.backtrack(digits, index)

        return self.res

Letter Combinations of a Phone Number

Difficulty: Medium


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"]

 

Constraints:

  • 0 <= digits.length <= 4
  • digits[i] is a digit in the range ['2', '9'].