题目描述:
方法一:回溯
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