当前位置:网站首页>【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);
}
}
}
边栏推荐
- 【活动早知道】LiveVideoStack近期活动一览
- Huawei simulator ENSP common commands
- Maya lamp modeling
- redis缓存
- [wechat applet] collaborative work and release
- Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
- Huawei ENSP simulator enables devices of multiple routers to access each other
- At the right time, the Guangzhou station of the city chain science and Technology Strategy Summit was successfully held
- TCP三次握手,四次挥手,你真的了解吗?
- [buuctf.reverse] 151_[FlareOn6]DnsChess
猜你喜欢
CAD中能显示打印不显示
创客思维在高等教育中的启迪作用
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??
福昕PDF编辑器v10.1.8绿色版
torch. Tensor and torch The difference between tensor
colResizable.js自动调整表格宽度插件
Jerry added the process of turning off the touch module before turning it off [chapter]
奋斗正当时,城链科技战略峰会广州站圆满召开
Methods of improving machine vision system
OMS系统实战的三两事
随机推荐
In the release version, the random white screen does not display the content after opening the shutter
Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
测试用例 (TC)
Day24:文件系统
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
每日一题-LeetCode1200-最小绝对差-数组-排序
[ 每周译Go ] 《How to Code in Go》系列文章上线了!!
Jerry's ad series MIDI function description [chapter]
[Shenbo introduction] VI How to contact your favorite doctoral tutor
FastDfs的快速入门,三分钟带你上传下载文件到云服务器
【C语言】符号的深度理解
Introduction to pressure measurement of JMeter
Daily question -leetcode1200- minimum absolute difference - array - sort
杰理之AD 系列 MIDI 功能说明【篇】
TweenMax表情按钮js特效
网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
HWiNFO硬件检测工具v7.26绿色版
B站视频 声音很小——解决办法
华为ensp模拟器 给路由器配置DHCP
async await 在map中使用