/**
* 17. 电话号码的字母组合
* @author wsq
* @date 2020/09/24
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
*/
package notsubmit.huishuo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LetterCombinations {
private List<String> ans = new ArrayList<String>();
@SuppressWarnings("unchecked")
private static Map<Character, String> letterMap = new HashMap(){
{
put('2', "abc");
put('3', "def");
put('4', "ghi");
put('5', "jkl");
put('6', "mno");
put('7', "pqrs");
put('8', "tuv");
put('9', "wxyz");
}
};
/**
* 当遇到这种一对多的问题,我们应该想到树形结构,该问题类似从树的根节点到叶子节点所有的路径
* 要将树形结构用到实际问题中去
* 回溯思想与递归实现的运用
*/
public List<String> letterCombinations(String digits) {
if(digits.length() == 0) {
return ans;
}
StringBuilder sb = new StringBuilder();
genLetterStr(digits, 0, sb);
return ans;
}
private void genLetterStr(String digits, int i, StringBuilder sb) {
// TODO Auto-generated method stub
if(i == digits.length()) {
ans.add(sb.toString());
return;
}
char c = digits.charAt(i);
String letters = letterMap.get(c);
for(char tmpC: letters.toCharArray()) {
sb.append(tmpC);
genLetterStr(digits, i+1, sb);
sb.deleteCharAt(sb.length() - 1);
}
}
public static void main(String[] args) {
String s = "23";
LetterCombinations lc = new LetterCombinations();
List<String> ans = lc.letterCombinations(s);
for(String ss: ans) {
System.out.println(ss);
}
}
}
相关推荐
i春秋第二届春秋欢乐赛 classical writeup
i春秋第二届春秋欢乐赛 classical writeup 第一步:题目给出的提示 根据题目我们可以了解这道题应该是一个古典密码的题目,但是古典密码太多了我们如何知道是什么? 看题目给出的附件是一个很长很长的乱序字符串,我们可以想到用词频分析一下: 发现里面有一段不一样的信息:LyjtL3fvnSRlo2xvKIjrK2ximSHkJ3ZhJ2Hto3x9 像是base64解码能够做出来,但是发现...
Leetcode17 电话号码的字母组合
Leetcode17 电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 解题思路 首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是
电脑版微信多开,最详细教程没有之一
首先桌面任意的位置右键新建文本文档输入如下代码: TASKKILL /F/IM WECHAT.EXE start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ...
17、电话号码的字母组合-cangjie
这个程序的核心思路是利用递归逐层构建字母组合,直到遍历完所有数字的可能字母。通过使用回溯方法(DFS),实现了对于所有可行组合的探索和累积。指向的是同一个引用,导致所有的array都变成了最后一次修改的结果。2、试了下append©,比insert(size, c)好用多了。目前是放弃了array,已老实用ArrayList。(其中 n 是输入字符串的长度)(用于递归栈和存储结果)倒是没报错,但是跑出来不对。1、array初始化问题。
PX4从放弃到精通(二十八):垂起过渡控制
固件版本:1.14.0可加名片交流学习。
使用VNA(Vector Network Analyzer)对S参数进行去嵌(一)
传统上,RF和微波组件被设计成具有同轴接口的封装。通过连接一系列这些单独的同轴设备,可以容易地制造复杂的系统。使用使用类似同轴接口的标准测试设备可以很容易地测量这些部件和系统的性能。然而,现代系统需要更高水平的组件集成、更低的功耗和更低的制造成本。射频组件正在迅速从使用昂贵同轴接口的设计转向使用印刷电路板和表面贴装技术(SMT)的设计。传统的同轴接口甚至可以从最终产品中取消。这就给设计者留下了用需要同轴接口的测试设备测量这些射频和微波组件性能的问题。解决方案是使用连接同轴和非同轴传输线的测试夹具。
Leetcode 17. 电话号码的字母组合
Leetcode 17. 电话号码的字母组合1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 本质上就是一个深搜问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决 笔者以C++方式解决。 #include "iostream" using namespace
使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤
本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整
leetcode 17.电话号码的字母组合
leetcode 17.电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答...
华为OD机试 - 统计文本数量(Java 2025 A卷 100分)
华为OD机试 2025A卷题库疯狂收录中,刷题。
微信小程序 - 实现仿小红书轮播图组件功能,类似小红书笔记页面图片展示播放效果,微信小程序仿小红书幻灯片轮播支持视频播放、图片预览,自动适应图片或视频大小可左右滑动切换(小程序精美轮播图,丝滑切换)
微信小程序,轮播图组件,微信小程序仿小红书轮播图,小红书轮播图仿造,微信小程序轮播图,微信小程序幻灯片,微信小程序高仿小红书轮播图实现,小程序实现类似小红书一样的轮播图组件,轮播图插件,精致轮播图,精美丝滑流畅切换的轮播图,轮播图组件,小红薯轮播图,关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现,微信小程序仿小红书图片轮播,开发微信小程序模仿小红书,高仿小红书Banner的指示器,小红书小程序笔记详情轮播图指示点的随图片数量的变化动态变化,微信小程序swiper轮播图,js轮播图,html
LeetCode 17 电话号码的字母组合(递归)
LeetCode 17 电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出...
使用MCAL的Fee模块集成ETAS存储协议栈
由于ETAS Fee模块导致初始化时间较长,且集成占用的内存较大,所以最终考虑使用MCAL中的Fee模块来集成ETAS的Nvm模块,本文介绍具体的集成方法注意:本文所涉及的集成前提是原有的ETAS协议栈已正常使用使用IFX Fee需要手动配置Fee,可能有出错的风险,最好是利用脚本自动生成代码来实现。另外,需要注意IFX的Fee中block数据没有CRC校验,如果使用该Fee,建议Nvm中加CRC校验(ETAS Fee中block自带CRC,可以不需要Nvm Crc),防止数据被意外篡改导致的异常。
力扣——17电话号码的字母组合
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。17. 电话号码的字母组合 - 力扣(LeetCode)的字符串,返回所有它能表示的字母组合。
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
LeetCode 热题 第17题 电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
【LeetCode】17. 电话号码的字母组合
题目要求根据电话号码数字(2-9)生成所有可能的字母组合。采用回溯算法,通过递归枚举每个数字对应的字母,逐步构建组合。时间复杂度为O(4^n),空间复杂度O(n)。关键步骤包括:数字-字母映射、递归回溯生成组合、处理边界情况(如空输入)。示例输入"23"输出["ad","ae","af","bd","be","bf","cd","ce&qu
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
【LeetCode每日一题】——17.电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
leetcode 17.电话号码的字母组合(python)
leetcode 17.电话号码的字母组合(python) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 方法 - 分治 class Solution(object): m = {
leetcode17 电话号码的字母组合
leetcode17 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 答题思路: 可以认为是广度优先的搜索思路,例如针对于“23”这样的输入: 首先考虑2对应的三种情况即:a,b,c
LeetCode-17 电话号码的字母组合
题目:17. 电话号码的字母组合 难度:中等 分类:字符串 解决方案:字符串遍历 今天我们学习第17题电话号码的字母组合,这是一道中等题。像这样字符串的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的题目描述。 题目描述 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字...
LeetCode.17 电话号码的字母组合
LeetCode.17 电话号码的字母组合,回溯解法。
LeetCode17. 电话号码的字母组合
LeetCode17. 电话号码的字母组合 dfs回溯 class Solution { public: //时间o(4^n), 空间O(4^n + n)(n为digits.length()) vector<string> letterCombinations(string digits) { if(digits.length() == 0) return vector<string>(); vector<vector<char&
leetcode 17 电话号码的字母组合
题目 leetcode 17 电话号码的字母组合 分析 定义: 输入的 string digits 为节点组成的 char数据 解空间: 2~9键中的字母 终止条件: 路径的长度 == 节点数组的长度 解的判断条件: 终止条件就是解条件 不需要减枝 code class Solution { void backtrace(const string& digits,vector&...
【LeetCode-17】电话号码的字母组合
【LeetCode-17】电话号码的字母组合,今天我们将探讨一个经典的回溯算法问题——电话号码的字母组合。通过详细的解题思路、完整的 Java 代码实现以及案例执行过程分析,我们将一步步揭开这个问题的奥秘。
1430



被折叠的 条评论
为什么被折叠?



