电话号码的字母组合

今天在 leetcode 上刷题的时候,又刷到一个组合的问题,下面是这道题的链接,感兴趣的小伙伴也可以去尝试一下。

https://leetcode.cn/problems/letter-combinations-of-a-phone-number/


示例 1:

输入:digits = "23"

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


示例 2:

输入:digits = ""

输出:[]


示例 3:

输入:digits = "2"

输出:["a","b","c"]


这也是一个使用多层 for 循环来写比较麻烦的题目。还是和组合问题1和组合问题2类似,我们还是可以画这样一个图,如果是数字 2 和 3,第一步可以选择 abc 中的一个字符,第二步针对选择的 abc 中的每一个,又可以选择 def 中的任何一个,所以可以构成下面这个树结构。

4534d1f2ad831615f5034b6cdcaa1f96.jpeg

在代码实现上,可以选择递归。

47829e3e9327fb66a06db545393a4255.jpeg

代码中,先创建数字对应字母的映射,然后将题目给定的数字字符串转换为对应的字符列表,然后在 dfs 函数中完成对字符列表的递归,按深度遍历的方式遍历完这棵树,一旦到达叶子节点,就将 root 到 叶子节点的路径加入到结果集中,最后返回结果集。


最后:祝大家中秋节快乐!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37657276

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值