
Leetcode 17. Letter Combinations of a Phone Number
发布日期:2025-04-04 22:40:55
浏览次数:14
分类:精选文章
本文共 1439 字,大约阅读时间需要 4 分钟。
字母组合生成的解决方案
这段代码展示了一个用于生成字母组合的C#解决方案,常见于电话按键盘上的字母提示功能。通过将数字映射到对应的字母组合,可以实现类似电话导航系统那样显示连续按键输入后的组合结果。
// 类 Solution 中的代码class Solution { // 字母组合映射,根据电话键盘布局 string[] mapping = { "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" }; // 递归获取字符串组合 void get_string(string &digits, int l, ref vectorans, ref string x) { if (l == digits.size()) { ans.push_back(x); return; } // 遍历当前数字对应的字母组合 for (auto c : mapping[digits[l] - '2']) { x.push_back(c); get_string(digits, l + 1, ans, x); x.pop_back(); } } // 生成字母组合 vector letterCombinations(string digits) { vector ans; if (digits.empty()) return ans; string x = ""; get_string(digits, 0, ans, x); return ans; }}
代码解析
该解决方案主要包括两个部分:mapping
数组和 get_string
函数、letterCombinations
函数。
mapping
数组:这是一个字符串数组,包含 12 个字母组合,分别对应常见电话键盘的布局:
- "abc" 对应 2 错
- "def" 对应 3 错
- "ghi" 对应 4 错
- "jkl" 对应 5 错
- "mno" 对应 6 错
- "pqrs" 对应 7 错
- "tuv" 对应 8 错
- "wxyz" 对应 9 错
get_string
函数:这是一个递归函数,主要负责按键输入的字母组合生成。具体逻辑包括:
- 当当前索引与输入数字长度相同时,将当前组合添加到结果列表中
- 对于每个数字,遍历其对应的字母组合
- 递归处理下一个数字,并在返回时恢复上一层(回溯)
letterCombinations
函数:作为解析入口,初始化组合结果列表。如果输入数字为空则直接返回空列表。否则,调用 get_string
函数进行处理,最终返回所有可能的字母组合。
样例使用
例如,输入 223
:
- 2 对应 "abc"
- 23 对应 "ab", "bc", "cc"合成后的结果为 "ab", "bc", "cc"。
这种解法通过递归的方式生成所有可能组合,虽然效率较高,但在处理大量组合时可能会出现性能问题。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 23时45分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
left join on、where后面的条件的区别
2025-04-05
left join right inner join 区别
2025-04-05
leftjoin多个on条件_MySQL:left join 避坑指南
2025-04-05
legend2---开发日志3(thinkphp的入口目录是public的体现是什么)
2025-04-05
legoblock秀上限
2025-04-05