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 = “2”
Output: [“a”,“b”,“c”]

Constraints:

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

My Answers

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        self.phone_dict = {
            '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'],
        }
        return self.multiply(digits, "")
 
    
    def multiply(self, remaining_digits: str, to_now: str) -> List[str]:
        if len(remaining_digits) == 0:
            return [to_now] if len(to_now) > 0 else []
 
        results = []
        for value in self.phone_dict[remaining_digits[0]]:
            results.extend(self.multiply(remaining_digits[1:], to_now+value))
                    
        return results

LeetCode - The World’s Leading Programming Learning Platform
technical interview