Java 电话号码的组合
电话号码的字母组合
中等
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
题解
先把2-9对应的字符用一个map存起来
我们可以知道这是一个全排列的问题
每次我们找到一组满足条件的组合,只需把最后一个字符删除在找下一个,知道找完第一个字符对应的所有组合,回溯上一个字符往下,继续之前的操作
因为不确定有几个确定字符,所以用递归的方式来确定for循环的次数
例如23
2=abc
3=def
Character c = digits.charAt(start);
String str = phoneMap.get(c);
for(int i = 0;i < str.length();i++){list1.add(str.charAt(i));help(digits,start+1);list1.remove(list1.size()-1);
}先从map取出2对应的字符遍历,每次遍历会先把该字符存入一个list1容器,递归该方法会在嵌套一个for循环3对应字符长度,如果还有则继续嵌套,当lsit1容器大小与digits长度一样,说明找到了一组解,遍历存入集合结束该循环,代码在下方,因为要回溯,所以每次调用该方法后会把该list1长度减一,实现回溯的过程
class Solution {List<String> list = new ArrayList<>();List<Character> list1 = new ArrayList<>();Map<Character, String> phoneMap = new HashMap<Character, String>() {{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 new ArrayList<>();}help(digits,0);return list;}public void help(String digits,int start){if(list1.size() == digits.length()){String str = "";for(int j = 0;j < list1.size();j++){str += list1.get(j);}list.add(str);return;}Character c = digits.charAt(start);String str = phoneMap.get(c);for(int i = 0;i < str.length();i++){list1.add(str.charAt(i));help(digits,start+1);list1.remove(list1.size()-1);}}
}
相关文章:
Java 电话号码的组合
电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits "23…...
MATLAB——将直接型转化为并联型和级联型
题目1(IIR): 已知一个系统的传递函数为: H(z)8−4z−111z−2−2z−31−1.25z−10.75z−2−0.125z−3H(z)\frac{8-4z^{-1}11z^{-2}-2z^{-3}}{1-1.25z^{-1}0.75z^{-2}-0.125z^{-3}}H(z)…...
.NET Framework .NET Core与 .NET 的区别
我们在创建C#程序时,经常会看到目标框架以下的选项,那么究竟有什么区别? 首先 .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体…...
carla与ros2的自动驾驶算法-planning与control算法开发与仿真
欢迎仪式 carla与ros2的自动驾驶算法-planning与control算法开发与仿真欢迎大家来到自动驾驶Player(L5Player)的自动驾驶算法与仿真空间,在这个空间我们将一起完成这些事情: 控制算法构建基础模块并仿真调试:PID、LQR、Stanley 、MPC、滑膜控…...
corn表达式
简单理解corn表达式:在使用定时调度任务的时候,我们最常用的,就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。cron表达式配置起来简洁方便,无论是Spring的Scheduled还是用Quartz框架,都支持…...
推荐系统中对抗性机器学习-文献综述与未来发展整理分享
对抗学习是一种机器学习技术,旨在通过提供欺骗性输入来欺骗模型。最常见的原因是导致机器学习模型出现故障。大多数机器学习技术旨在处理特定的问题集,其中从相同的统计分布(IID)生成训练和测试数据。当这些模型应用于现实世界时&…...
Proteus8.15安装教程
1、解压Proteus8.15 安装包,然后双击进去,找到setup文件,右键,以管理员身份运行。 2、需要安装一些插件,点击“next”。把插件安装完成。 点击“finfish” 点击“install” 点击“Cancel” 3、如果没有上面步骤&…...
Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符关系运算符布尔运算符字符串运算符文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。…...
Linux基础命令-sed流编辑器
Linux三剑客-grep命令 Sed 一. 命令介绍 先到帮助文档中查看命令的描述信息 NAME sed - stream editor for filtering and transforming text sed命令是操作、过滤和转换文本内容的强大工具,常用功能包括结合正则表达式对文件实现快速增删改查,其中查询…...
C语言笔试题(1)
#include <stdio.h> #include <stdlib.h> #include <string.h> void getmemory(char *p) { p(char *) malloc(100); strcpy(p,“hello world”); } int main(void) { char *strNULL; getmemory(str); printf(“%s/n”,str); free(str); return 0; } 上述程序…...
网络连接的三种模式
文章目录前言一、三种连接模式介绍二、三种网络连接模式的区别前言 在进行虚拟机配置时,网络连接分为三种模式:桥接模式,NAT模式,主机模式 一、三种连接模式介绍 张三、李四、王五在同一个网段,所以他们之间可以相互…...
大学模拟电路期末考试模拟题详解
(一)选择题 3.4.5.6.7.8.9.10. (二)填空题 1.漂流电流是温度电流,它由少数、载流子形成、其大小与温度有关,而与外加电压无关。 反向电流是由少数载流子形成、其大小与温度有关,而与外加电压无…...
C/C++内存管理讲解
c/C内存管理讲解 C/C内存分布 首先通过一些题目的引入讲解带大家走进C/C的内存分布。 eg1: 根据上述变量的定义,来判断它们所在的内存位置。 从接下来的4个选项中选出最佳答案填入(注:可重复选)。 A、栈 B、堆 C、数…...
【Linux】网络原理
本篇博客让我们一起来了解一下网络的基本原理 1.网络发展背景 关于网络发展的历史背景这种东西就不多bb了,网上很容易就能找到参考资料,我的专业性欠缺,文章参考意义也不大。这里只做简单说明。 网络发展经过了如下几个模式 独立模式&…...
list模拟实现
list模拟实现list原理讲解节点结构list类设计push_backIterators:begin与endconst对象的迭代器重载->运算符反向迭代器迭代器所有代码迭代器总结constructor:clear~listfront与backinsert与erasesize与empty与swappop_back()总代码:节点类正向迭代器类反向迭代器类list类lis…...
CSS看这一篇就够啦,CSS基础大全,可用于快速回顾知识,面试首选
1 CSS简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称。 CSS 是也是一种标记语言,主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、 边距等)以及版面的布局和外观…...
Canvas详细使用方法(一)
Canvas Canvas的注意事项 < canvas > 和 < img > 元素很相像,唯一的不同就是它并没有 src 和 alt 属性。 -< canvas > 标签只有两个属性——width和height( 单位默认为px )。当没有设置宽度和高度时,canvas 会初始化宽为 300px 和高…...
CentOS定时任务——crontab
crontab Linux crontab 是用来定期执行程序的命令。 crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你…...
C51---蓝牙模块---连接软件---控制LED灯
1.器件:C51、HC-08蓝牙模块、Ty-C数据线、杜邦线 2.软件:HC蓝牙助手 3.接线:VCC-VCC、GND-GND、RXD-TXD、TXD-RXD 4.烧写:STC-ISP串口助手 5.代码: #include "reg52.h" #include "intrins.h" …...
Linux 学习笔记——二、主机规划与磁盘分区
一、Linux 与硬件的搭配 Linux 中所有设备均被视为文件,其命名规则如下: 设备文件名SCSI/SATA/USB 硬盘机/dev/sd[a-p]USB 闪存盘/dev/sd[a-p](与 SATA 相同)Virtl/O 界面/dev/vd[a-p](用于虚拟机内)软盘…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
