Letter Combinations of a Phone Number

Leetcode-17

Posted by Evan on October 17, 2017

Letter Combinations of a Phone Number

Question

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Answer

一类回溯问题,递归调用可求解

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        res = []
        if digits == "":
            return res
        my_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']}
        for i in range(len(digits)):
            if i == 0:
                res = my_dict[int(digits[i])]
            else:
                res = [x + y for x in res for y in my_dict[int(digits[i])]]
        return res