[LeetCode] 17. 电话号码的字母组合(回溯)
题目
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
全排列问题,回溯。
代码
class Solution {
public static List<String> letterCombinations(String digits) {
if (digits.length() == 0) {
return new ArrayList<>();// 保证空串返回[],而不是[""]
}
HashMap<Character, String> map = new HashMap<>(); //
map.put('2', "abc");
map.put('3', "def");
map.put('4', "ghi");
map.put('5', "jkl");
map.put('6', "mno");
map.put('7', "pqrs");
map.put('8', "tuv");
map.put('9', "wxyz");
List<String> ansList = new ArrayList<>();
traceBack(map, digits, "", 0, ansList);
return ansList;
}
private static void traceBack(HashMap<Character, String> map, String digits, String curStr,
int pos, List<String> ansList) {
if (pos == digits.length()) {//
ansList.add(curStr);
return;
}
String letters = map.get(digits.charAt(pos));
for (int i = 0; i < letters.length(); ++i) {
char letter = letters.charAt(i);
traceBack(map, digits, curStr + letter, pos + 1, ansList);
}
}
}
[LeetCode] 17. 电话号码的字母组合(回溯)的更多相关文章
- [LeetCode] 17. 电话号码的字母组合 ☆☆☆(回溯) ###
描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[&q ...
- Java实现 LeetCode 17 电话号码的字母组合
17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...
- leadcode的Hot100系列--17. 电话号码的字母组合--回溯的另一种想法的应用
提交leetcode的时候遇到了问题,一直说访问越界,但仔仔细细检查n多遍,就是检查不出来. 因为我用到了count全局变量,自加一来表明当前数组访问的位置, 后来突然想到,是不是在leetcode在 ...
- LeetCode 17. 电话号码的字母组合(Letter Combinations of a Phone Number)
题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出: ...
- [LeetCode] 17. 电话号码的字母组合
题目描述:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 题目描述: 给定一个仅包含数字 2-9 的字符 ...
- leetcode 17电话号码的字母组合
与子集70?类似,子集每次两个分支,本题每次k个分支,子集是第一次不push第二次push元素,本题是每次都push元素,因此,本题答案的长度都为k,子集题目为各种组合: /** res,level, ...
- Leetcode之回溯法专题-17. 电话号码的字母组合(Letter Combinations of a Phone Number)
[Leetcode]17. 电话号码的字母组合(Letter Combinations of a Phone Number) 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组 ...
- leetcode(js)算法之17电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母 示例: 输入:"23" 输出:[" ...
- Leetcode题库——17.电话号码的字母组合
@author: ZZQ @software: PyCharm @file: letterCombinations.py @time: 2018/10/18 18:33 要求:给定一个仅包含数字 2- ...
随机推荐
- run as --> Maven clean 可以清除旧的jar包
run as --> Maven clean 可以清除旧的jar包
- topic相关问题
1.下面是一个topic数据出现堵塞的情况示图. 如图所示,delta列表示当前分区未处理的数据条数,kafka current表示推送到topic的数据量,spout current表示已经处理的数 ...
- linux下的scp传输文件
转载于:http://moyu2010.blog.163.com/blog/static/177439041201112710243064/,再次谢谢作者. 1.功能说明scp就是security c ...
- 【踩坑笔记】layui之单选和复选框不显示
直接上代码,下面前端页面代码,使用layui框架: <div class="layui-form-item"> <div class="lay ...
- get customer attribute option
Mage::getResourceSingleton('customer/customer')->getAttribute('gender')->getSource()->getAl ...
- cinder-volume服务上报自己的状态给cinder-scheduler的rpc通信代码分析
以juno版本为基础,主要从消息的生产者-消费者模型及rpc client/server模型来分析cinder-volume是如何跟cinder-scheduler服务进行rpc通信的 1.cinde ...
- c++右值引用和转移构造函数
int &&i = ; //i绑定到了右值1 int b = ; cout << i << endl; //输出1 i = b; cout << i ...
- 跟我一起学.NetCore之日志(Log)模型核心
前言 鲁迅都说:没有日志的系统不能上线(鲁迅说:这句我没说过,但是在理)!日志对于一个系统而言,特别重要,不管是用于事务审计,还是用于系统排错,还是用于安全追踪.....都扮演了很重要的角色:之前有很 ...
- 小白一样能建站——winser2012 IIS8.0搭建基本的网站
在window server 2012环境下,搭建一个基本的 网站.能够使用即可. 打开服务器管理器 添加角色和功能 默认下一步 下一步, 下一步,选择web服务器 添加功能 下一步, 下一步,不安装 ...
- JS开发必须知道的41个技巧
JS是前端的核心,但有些使用技巧你还不一定知道:本文梳理了JS的41个技巧,帮助大家提高JS的使用技巧: Array 1.数组交集 普通数组 const arr1 = [, , , , , ,],ar ...