
LeetCode17 电话号码的字母组合
创建映射字典:首先,我们需要将数字映射到对应的字母。可以使用字典或数组来存储这些映射关系。 初始化回溯函数:使用递归函数来实现深度优先搜索。每次选择当前数字对应的所有字母,并为每个字母继续递归。 临时保存路径:在递归过程中,使用一个临时数组保存当前路径,确保每个分支都能正确独立进行。 判断终止条件:当我们处理完所有数字后,将当前路径添加到结果中。 返回结果:将所有可能的组合收集起来,并返回给用户。 映射字典: 返回类型:函数 初始化函数: 递归函数: 路径管理:在递归开始时,添加当前字母到路径;递归返回后,删除最后一个字母,以确保路径清空以便下一次递归使用同一个列表。
发布日期:2021-05-14 23:49:54
浏览次数:19
分类:精选文章
本文共 1497 字,大约阅读时间需要 4 分钟。
原题目分析
我们需要根据给定的数字字符串,生成所有可能对应的字母组合。这个问题类似于电话键盘上的字母排列。每个数字对应特定的字母如下:
- 2: abc
- 3: def
- 4: ghi
- 5: jkl
- 6: mno
- 7: pqrs
- 8: tuv
- 9: wxyz
我们的目标是找出所有可能的组合,例如输入“23”的输出为["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]。
解决方法
为了解决这个问题,我们可以使用回溯算法(Depth-First Search,DFS)来逐步构建所有可能的组合。具体步骤如下:
源代码
def letterCombinations(digits): if not digits: return [] mapping = { '2': ['a', 'b', 'c'], '3': ['d', 'e', 'f'], '4': ['g', 'h', 'i'], '5': ['j', 'k', 'l'], '6': ['m', 'n', 'o'], '7': ['p', 'q', 'r', 's'], '8': ['t', 'u', 'v'], '9': ['w', 'x', 'y', 'z'] } result = [] current_path = [] def dfs(index, path): if index == len(digits): result.append(''.join(path)) return for char in mapping[digits[index]]: path.append(char) dfs(index + 1, path) path.pop() dfs(0, current_path) return result
解释
mapping
字典将每个数字映射到对应的字母列表。letterCombinations
返回一个包含所有可能字母组合的列表。current_path
用于保存当前构建的路径,result
用于存储最终的结果。dfs
根据当前索引和路径,递归地尝试所有可能的字母组合。这种方法能够高效地生成所有可能的字母组合。递归的终止条件是处理完所有数字,或者当所有数字对应的字母都被处理完时结束。
示例
输入:“23”输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月22日 15时33分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
我用wxPython搭建GUI量化系统之多只股票走势对比界面
2019-03-07
selenium+python之切换窗口
2019-03-07
重载和重写的区别:
2019-03-07
搭建Vue项目步骤
2019-03-07
账号转账演示事务
2019-03-07
idea创建工程时错误提醒的是architectCatalog=internal
2019-03-07
SpringBoot找不到@EnableRety注解
2019-03-07
简易计算器案例
2019-03-07
在Vue中使用样式——使用内联样式
2019-03-07
Explore Optimization
2019-03-07
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2019-03-07
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
2019-03-07
解决数据库报ORA-02289:序列不存在错误
2019-03-07
map[]和map.at()取值之间的区别
2019-03-08
成功解决升级virtualenv报错问题
2019-03-08
【SQLI-Lab】靶场搭建
2019-03-08
【Bootstrap5】精细学习记录
2019-03-08
LeetCode197.打家劫舍
2019-03-08