CP
LeetcodeBacktracking

17. Letter Combinations of a Phone Number

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return []

        n = len(digits)
        hm = {
            '2': 'abc',
            '3': 'def',
            '4': 'ghi',
            '5': 'jkl',
            '6': 'mno',
            '7': 'pqrs',
            '8': 'tuv',
            '9': 'wxyz'
        }
        
        def backtrack(i: int, path: str) -> None:
            if i == n:
                result.append(path)
                return
            for letter in hm[digits[i]]:
                backtrack(i + 1, path + letter)

        result = []
        backtrack(0, '')
        return result