力扣题库刷题笔记17--电话号码的字母组合

1、题目如下:

2、个人Python代码实现:

        还是先记录一下思路,首先这种类型的题,需要自定义一个字典对应题目中的电话号码和数字。其次,个人的思路是,先读取字符串第一个字符(digits[0]),遍历digits[0] 在字典中对应的值并加入数组res,然后在遍历digits[1:]的数组时候跟第一次遍历是有区别的。举例digits = ‘2345’:

        1、digits[0]也就是2,2在电话号码里面对应“abc”,遍历“abc”加入数组res,这时候res=[a,b,c]

        2、digits[1]也就是3,3在电话号码里面对应“def”,这个时候是res里面的每个元素都需要和def的每个字符进行拼接(换句话说,就是a分别和d、e、f拼接、b分别和d、e、f拼接,c分别和d、e、f拼接),最后加入到res里面。所以我们采用了临时变量temp的方式进行实现

        3、digits[2]、digits[3]的实现方式也跟第二条保持一致

        个人调试代码如下(Pythoncharm复制过来没有缩进手动按的缩进,如果代码有问题,请参照下图调整对齐):

 

dic = {
        "2": "abc",
        "3": "def",
        "4": "ghi",
        "5": "jkl",
        "6": "mno",
        "7": "pqrs",
        "8": "tuv",
        "9": "wxyz"
}
s = ["23", "", "2", "9876"]
for digits in s:
        res = []
        while digits:
                char = dic[digits[0]]
                if not res:
                        for i in char:
                        res.append(i)
                else:
                        temp = res
                        res = []
                        for i in char:
                                for str in temp:
                                        res.append(str + i)
                                        digits = digits[1:]
                                        res.sort()
                                        print("输出为:{0}".format(res))
                                        print("输出长度为:{0}".format(len(res)))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值