[leetcode---dfs]电话号码的字母组合

一是第一次熟悉python的类的写法
二是这个有好多循环,有点绕

class Solution:        
    def letterCombinations_sub(self, num:list, dig:list, p:list,cur:str, n:int)-> List[str]:
        if(n < len(num) - 1):
            for i in range(len(dig[num[n]])):
                p = self.letterCombinations_sub(num, dig, p, cur + dig[num[n]][i], n+1)
        else:'''长度达到len(num) - 1, 等于构造好了'''
            for i in range(len(dig[num[n]])):
                p.append(cur+dig[num[n]][i])
        return p
        
    def letterCombinations(self, digits: str) -> List[str]:  
        dig = [[] for _ in range(8)]
        num = []    
        p = []
        n = 0
        if(len(digits) == 0):
            return []
        for i in range(5):
            st = ord("a") + i * 3
            dig[i].append(chr(st))
            dig[i].append(chr(st+1))
            dig[i].append(chr(st+2))
        dig[5].extend(['p','q','r','s'])
        dig[6].extend(['t','u','v'])
        dig[7].extend(['w','x','y','z'])
        for i in range(len(digits)):
            num.append(int(digits[i]) - 2)
        cur = ""
        return self.letterCombinations_sub(num, dig,p,cur,n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值