当前位置:网站首页>【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);
}
}
}
边栏推荐
猜你喜欢
Introduction to pressure measurement of JMeter
shp数据制作3DTiles白膜
华为ensp模拟器 DNS服务器的配置
The video sound of station B is very low - solution
Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation
PS竖排英文和数字文字怎么改变方向(变竖直显示)
IIC (STM32)
TweenMax表情按钮js特效
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??
仿ps样式js网页涂鸦板插件
随机推荐
五子棋 上班摸鱼工具 可局域网/人机
minidom 模塊寫入和解析 XML
数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
render函数与虚拟dom
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
【活动早知道】LiveVideoStack近期活动一览
PS竖排英文和数字文字怎么改变方向(变竖直显示)
杰理之AD 系列 MIDI 功能说明【篇】
TweenMax表情按钮js特效
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
[micro service SCG] use of predict
冰河的海报封面
Redis transaction
FastDfs的快速入门,三分钟带你上传下载文件到云服务器
华为ensp模拟器 DNS服务器的配置
Redis cache
maya灯建模
Daily question -leetcode1200- minimum absolute difference - array - sort
每日一题-LeetCode556-下一个更大元素III-字符串-双指针-next_permutation
多模输入事件分发机制详解