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