leetcode-17-电话号码的字母组合’

题目描述:

方法一:回溯

class Solution: 
    def letterCombinations(self, digits): 
        """
        :type digits: str
        :rtype: List[str]
        """ 
        phone = {'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']} 
        def backtrack(combination, next_digits): 
            # if there is no more digits to check 
            if len(next_digits) == 0: 
                # the combination is done 
                output.append(combination) 
                # if there are still digits to check 
            else: 
                    # iterate over all letters which map 
                    # the next available digit 
                for letter in phone[next_digits[0]]: 
                    # append the current letter to the combination 
                    # and proceed to the next digits 
                    backtrack(combination + letter, next_digits[1:]) 
        output = [] 
        if digits: backtrack("", digits) 
        return output

二:

class Solution: 
    def letterCombinations(self, digits): 
        """
        :type digits: str
        :rtype: List[str]
        """ 
        m = {'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']} 
        if not digits: 
            return [] 
        ls1 = [''] 
        for i in digits: 
            ls1 = [x + y for x in ls1 for y in m[i]] 
        return ls1

 

posted @ 2019-07-09 16:36  oldby  阅读(416)  评论(0编辑  收藏  举报