当前位置:网站首页>【LeetCode】17、电话号码的字母组合
【LeetCode】17、电话号码的字母组合
2022-07-04 20:34:00 【小曲同学呀】
17. 电话号码的字母组合
题外话:
今天继续刷LeetCode,发现一不小心入选了,《数据结构与算法领域内容榜》,全靠各位大佬们的支持,感谢感谢。
接下来,继续刷题,解析,希望能对想学习算法的同学,有所帮助。
题目:
给定一个仅包含数字 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[i] 是范围 [‘2’, ‘9’] 的一个数字。
解题思路:
此题难度简单,首先,看到所有组合,大家的第一反应估计就是回溯,是的,没错,这题完全可以用回溯来解题。
可以先用一个map,来存储所有的数字对应的字母。。
使用回溯法,一一穷举,列尽所有可能解即可。
参考代码:
class Solution {
//设置全局列表存储最后的结果
List<String> list = new ArrayList<>();
public List<String> letterCombinations(String digits) {
if (digits == null || digits.length() == 0) {
return list;
}
//初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""
String[] numString = {
"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
//迭代处理
backTracking(digits, numString, 0);
return list;
}
//每次迭代获取一个字符串,所以会设计大量的字符串拼接,所以这里选择更为高效的 StringBuild
StringBuilder temp = new StringBuilder();
//比如digits如果为"23",num 为0,则str表示2对应的 abc
public void backTracking(String digits, String[] numString, int num) {
//遍历全部一次记录一次得到的字符串
if (num == digits.length()) {
list.add(temp.toString());
return;
}
//str 表示当前num对应的字符串
String str = numString[digits.charAt(num) - '0'];
for (int i = 0; i < str.length(); i++) {
temp.append(str.charAt(i));
//c
backTracking(digits, numString, num + 1);
//剔除末尾的继续尝试
temp.deleteCharAt(temp.length() - 1);
}
}
}

边栏推荐
猜你喜欢

Explication détaillée du mécanisme de distribution des événements d'entrée multimodes

Foxit pdf editor v10.1.8 green version

Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)

Golang中UTF编码和字符集

Day24:文件系统

仿ps样式js网页涂鸦板插件

Routing configuration and connectivity test of Huawei simulator ENSP

Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"

WGCNA分析基本教程总结

Daily question -leetcode1200- minimum absolute difference - array - sort
随机推荐
shp数据制作3DTiles白膜
Huawei simulator ENSP common commands
Minidom module writes and parses XML
【C語言】符號的深度理解
__ init__ () missing 2 required positive arguments
NetWare r7000 Merlin system virtual memory creation failed, prompting that the USB disk reading and writing speed does not meet the requirements. Solution, is it necessary to create virtual memory??
Solution of 5g unstable 5g signal often dropped in NetWare r7000 Merlin system
Huawei ENSP simulator configures DHCP for router
LambdaQueryWrapper用法
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
The video sound of station B is very low - solution
【活动早知道】LiveVideoStack近期活动一览
宝塔 7.9.2 宝塔控制面板绕过 手机绑定认证 绕过官方认证
Can be displayed in CAD but not displayed in print
Jerry's ad series MIDI function description [chapter]
杰理之AD 系列 MIDI 功能说明【篇】
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
[buuctf.reverse] 151_[FlareOn6]DnsChess
js 3D爆炸碎片图片切换js特效
解析互联网时代的创客教育技术