本文共 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 个字母组合,分别对应常见电话键盘的布局:
get_string
函数:这是一个递归函数,主要负责按键输入的字母组合生成。具体逻辑包括:
letterCombinations
函数:作为解析入口,初始化组合结果列表。如果输入数字为空则直接返回空列表。否则,调用 get_string
函数进行处理,最终返回所有可能的字母组合。
例如,输入 223
:
这种解法通过递归的方式生成所有可能组合,虽然效率较高,但在处理大量组合时可能会出现性能问题。
转载地址:http://bagyk.baihongyu.com/