LeetCode 17

LeetCode 17

用dfs的方式遍历所有可能

    def letterCombinations(self, digits: str) -> List[str]:
        d = collections.defaultdict(list)
        d['2'] = ['a', 'b', 'c']
        d['3'] = ['d', 'e', 'f']
        d['4'] = ['g', 'h', 'i']
        d['5'] = ['j', 'k', 'l']
        d['6'] = ['m', 'n', 'o']
        d['7'] = ['p', 'q', 'r', 's']
        d['8'] = ['t', 'u', 'v']
        d['9'] = ['w', 'x', 'y', 'z']
        d['0'] = [' ']

        ds = list()
        for digit in digits:
            if digit in d:
                ds.append(digit)
        
        if len(ds) == 0: return list()
        
        result = list()
        Solution.generatorCombinations(d, ds, "", result)
        return result

    @staticmethod
    def generatorCombinations(d:dict(), ds:list, current: str, result: list()):
        if len(current) == len(ds): 
            result.append(current)
            return
        
        pos = len(current)
        for v in d[ds[pos]]:            
            Solution.generatorCombinations(d, ds, current + v, result)        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值