leetcode(11) Letter Combinations of a Phone Number

来源:互联网 发布:减肥吃什么知乎 编辑:程序博客网 时间:2024/06/07 14:58

problem

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”].
Note: Although the above answer is in lexicographical order, your answer could be in any order you want.

分析

这个问题理解起来不难,关键就在于如何用代码实现乘法原理,下面这种想法就是从前到后逐渐添加遍历字母。还可以使用递归的方法

迭代的方法:

class Solution(object):    def letterCombinations(self, digits):        """        :type digits: str        :rtype: List[str]        """        dic = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mon', '7':'pqrs', '8':'tuv', '9':'wxyz'}        res = ['']        if digits == '':            return[]        for digit in digits:            tmptres = []            for char in dic[digit]:                for i in res:                    tmptres.append(i+char)            res = tmptres        return res

递归方法:

def combination(digits):    dic = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mon', '7':'pqrs', '8':'tuv', '9':'wxyz'}    if len(digits) == 1:        return [x for x in dic[digits]]    else:        latter = combination(digits[1:])        res = []        for char in dic[digits[0]]:            for i in latter:                res.append(char + i)        return res
原创粉丝点击