LeeCode题库第十七题

项目场景:

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。


问题描述

        如果digits为空,直接返回空数组。将2-9相应的字母组合加到列表phone中,初始化队列之后遍历digit, 利用广度优先搜索BFS遍历队列中的所有组合,将此时队列中的第一个组合设为x,之后遍历此时数字对应的字母,ord('2') 是 50,所以 ord(digit) - 50 将数字 2-9 映射到 0-7;将x+此时的字母添加到queue队列中,循环结束后返回即可。下面是一个例子,digit为‘23’。

  1. 初始化:

    phone = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
    queue = ['']
  2. 处理数字 2

    • 当前队列:['']

    • 取出 '',添加 abc

      queue = ['a', 'b', 'c']
  3. 处理数字 3

    • 当前队列:['a', 'b', 'c']

    • 取出 a,添加 def

      queue = ['b', 'c', 'ad', 'ae', 'af']
    • 取出 b,添加 def

      queue = ['c', 'ad', 'ae', 'af', 'bd', 'be', 'bf']
    • 取出 c,添加 def

      queue = ['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']
  4. 返回结果:

    ['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']
输出:
['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']

 

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return []
        phone=['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
        queue=['']
        for digit in digits:
            for _ in range(len(queue)):
                x=queue.pop(0)
                for letter in phone[ord(digit)-50]:
                    queue.append(x+letter)
        return queue
                    

        代码提交情况。 

 

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值