LEETCODE

# 17. Letter Combinations of a Phone Number [BACKTRACK, DFS]

로그앤 2023. 10. 8. 08:38

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'].

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        ans = []
        alphabet = {
            "2":"abc",
            "3":"def",
            "4":"ghi",
            "5":"jkl",
            "6":"mno",
            "7":"pqrs",
            "8":"tuv",
            "9":"wxyz",
        }
        def backTrack(i, curStr):
            #print("backTrack:  ", i, curStr)
            if len(curStr) == len(digits):
                ans.append(curStr)
                #print("RETURNING:  ", ans)
                return
            for c in alphabet[digits[i]]:
                backTrack(i+1, curStr + c)

        if digits:
            backTrack(0,"")
        return ans