LeetCode 17. Letter Combinations of a Phone Number

题目

在这里插入图片描述

思路

在这里插入图片描述
递归思路,从头开始遍历字符串,结果是,当前字符串能表示的字母 加上 后续所有字符能表示的字母串。
在这里插入图片描述
时间复杂度为3^n(因为每个字符对应3个字母的可能,n个字符),近似O(2^n)

代码

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        res = []
        if digits == '': # 注意判断输入字符串为空的情况
            return res
        res = self.find(0, digits, '', res)
        return res
        
    # s保存从digits[0-index-1]能得到的一个字符串,即上图树形结构的一条路径
    def find(self, index, digits, s, res):
        if index == len(digits):
            res.append(s)
            return res
        dic  = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        c = digits[index]
        letters = dic[c]
        for i in letters:
            res = self.find(index+1,digits,s+i,res)
        return res

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值