【leetcode系列】【算法】【中等】电话号码的字母组合

题目:

原题链接: https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

 

解题思路:

"所有组合",第一反应就是回溯

但是这个题感觉不需要剪枝,直接往后拼接就好了

所以用DFS把所有可能的字符串都拼接好就行了

我实现的使用了stack来保存当前已拼接好的字符串,用于下一次循环

 

代码实现:

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        num_len = len(digits)
        if 0 == num_len:
            return []
        
        num_map = {'2' : 'abc', '3' : 'def', '4' : 'ghi', '5' : 'jkl', '6' : 'mno', '7' : 'pqrs', '8' : 'tuv', '9' : 'wxyz'}
        
        res_lst = [i for i in num_map[digits[0]]]
        for curr_num in digits[1:]:
            tmp_lst = []
            while 0 < len(res_lst):
                a = res_lst.pop()
                for b in num_map[curr_num]:
                    tmp_lst.append(a + b)
                
            res_lst = tmp_lst
            
        return res_lst

再来一个为什么用py来做题,不用c++做题的理由(虽然这么做和题目原本的意思相差较远):

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        conversion={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        if len(digits)==0:
            return [] 
        product=['']
        for k in digits:
            product=[i+j for i in product for j in conversion[k]]
        return product

作者:jutraman
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/pythondian-hua-hao-ma-de-zi-mu-zu-he-by-jutraman/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值