力扣算法17. 电话号码的字母组合 本文讲解用C#语言对于这道题的解法: 1.题干部分 给定一个仅包含数字 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 是范围 ['2', '9'] 的一个数字。 答案演示示例:
完整代码: - static string[] lettersArr = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
- string digits;
- IList<string> combinations;
- public IList<string> LetterCombinations(string digits)
- {
- this.digits = digits;
- this.combinations = new List<string>();
- if (digits.Length == 0)
- {
- return combinations;
- }
- Backtrack(0, new StringBuilder());
- return combinations;
- }
- public void Backtrack(int index, StringBuilder combination)
- {
- if (index == digits.Length)
- {
- combinations.Add(combination.ToString());
- }
- else
- {
- int digit = digits[index] - '0';
- string letters = lettersArr[digit];
- foreach (char c in letters)
- {
- combination.Append(c);
- Backtrack(index + 1, combination);
- combination.Length--;
- }
- }
- }
复制代码
代码解释: 以下是代码的详细说明: 1.静态数组 lettersArr: 这个数组定义了每个数字对应的字母组合。数组的索引代表数字,值是该数字对应的字母字符串。例如,索引 2 对应 "abc",索引 3 对应 "def"。 static string[] lettersArr = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
2.变量声明: string digits;
IList<string> combinations;
3.主函数 LetterCombinations: 这个函数接收一个数字字符串digits,并返回所有可能的字母组合。 public IList<string> LetterCombinations(string digits)
{
this.digits = digits;
this.combinations = new List<string>();
if (digits.Length == 0)
{
return combinations;
}
Backtrack(0, new StringBuilder());
return combinations;
}
4.递归函数 Backtrack:这个函数用于递归生成所有的字母组合。 public void Backtrack(int index, StringBuilder combination)
{
if (index == digits.Length)
{
combinations.Add(combination.ToString());
}
else
{
int digit = digits[index] - '0';
string letters = lettersArr[digit];
foreach (char c in letters)
{
combination.Append(c);
Backtrack(index + 1, combination);
combination.Length--;
}
}
}
终止条件: 如果 index 等于 digits 的长度,说明已经生成了一组完整的组合,将其加入 combinations 列表中。 递归过程: 获取当前数字对应的字母字符串。对每个字母:将字母添加到当前组合中。递归调用 Backtrack 处理下一个数字。递归返回后,移除最后一个字母(进行回溯操作)。 通过这种方式,递归地生成所有可能的字母组合并存储在 combinations 列表中。
作者介绍:
宇哥副业是一名央企总部员工,电力工程师。
主业是一名编程培训讲师、电商从业者和电商讲师。
目前运营有3家淘宝店、6家闲鱼店、2家抖店、1家亚马逊(没生意),以及10多个自媒体平台和2个个人网站。
目前来看,全网学习办公软件和编程的女同学几乎没有不认识我的,但我更希望全网搞电商的女同学也都认识我。
现在宇哥做电商做培训还是比较顺的,而且主业还上班,目前一年到手的收入加起来有100来个。本来可以躺平,但是由于个人情绪一直不稳定、精神状态时好时坏,因此挺爱吐吐槽、码码字,挺愿意分享的。
我未来的打算是回老家做跨境,一边过退休生活,一边赚点躺着赚钱的生意。另外我计划每年写100万字不糊弄事的精品文章,包括宇哥的人生经验、做技术培训的经验、做电商的经验、做自媒体的经验,都分享给大家。
写作是为了流传后世,能帮助一些人最好。帮不上就当是给自己看了。
承蒙大家厚爱,很多人爱看。
谢谢大家。
宇哥课程广告 (长按二维码进入店铺,了解Access课程目录和介绍,点击订阅直接购买并观看录播课) Access零基础教程299.99元
| Access开发教程799.99元 | Access即学即用教程299.99元 | | | | Access进销存教程199.99元 | Access陪跑教程1599.99元 | VBA教程299.99元
| | | |
有详细问题请加宇哥微信:datamap1999
|