leetcode:17. Letter Combinations of a Phone Number

输入输出示例

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

我采用了将输入拆成两部分,然后再把结果加起来的方法,简单粗暴。

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        dic={"0":[" "],"1":["*"],"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"]}
        n=len(digits)
        if not n :return []
        if n==1:return dic[digits]
        else:
            n/=2
            a=self.letterCombinations(digits[:n])
            b=self.letterCombinations(digits[n:])
            c=[]
            for i in a:
                for j in b:
                    c.append(i+j)
            return c

如果把上述代码用列表生成式简写一下,变短很多,97%的样子。

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        dic = {"0": [" "], "1": ["*"], "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"]}
        n = len(digits)
        if not n: return []
        if n == 1:
            return dic[digits]
        else:
            n /= 2
            return [i+j for i in self.letterCombinations(digits[:n]) for j in self.letterCombinations(digits[n:])]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值