17. 电话号码的字母组合

news2025/2/23 23:37:05

17. 电话号码的字母组合

给定一个仅包含数字 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’] 的一个数字。

思路:(回溯)

Backtracking(回溯)属于 DFS。

  • 普通 DFS 主要用在 可达性问题 ,这种问题只需要执行到特定的位置然后返回即可。
  • 而 Backtracking 主要用于求解 排列组合 问题,例如有 { ‘a’,‘b’,‘c’ } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求解过程。

因为 Backtracking 不是立即返回,而要继续求解,因此在程序实现时,需要注意对元素的标记问题:

  • 在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问,这样才能在继续递归调用时不用重复访问该元素;
  • 但是在递归返回时,需要将元素标记为未访问,因为只需要保证在一个递归链中不同时访问一个元素,可以访问已经访问过但是不在当前递归链中的元素

代码:(Java)

import java.util.List;
import java.util.ArrayList;

public class letter_combination {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String digits = "23";
		System.out.println(letterCombinations(digits));

	}
	private static final String[] keys = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
	
	public static List<String> letterCombinations(String digits) {
		List<String> combinations = new ArrayList<>();
		if(digits == null || digits.length() == 0) {
			return combinations;
		}
		doCombination(new StringBuilder(), combinations,digits);
		return combinations;
    }

	private static void doCombination(StringBuilder prefix, List<String> combinations, String digits) {
		// TODO 自动生成的方法存根
		if(prefix.length() == digits.length()) {
			combinations.add(prefix.toString());
			return;
		}
		int curDigits = digits.charAt(prefix.length()) - '0';
		String letters = keys[curDigits];
		for(char c : letters.toCharArray()) {
			prefix.append(c);
			doCombination(prefix, combinations,digits);
			prefix.deleteCharAt(prefix.length() - 1);
		}
	}
}

复杂度分析:

时间复杂度: O ( 3 m × 4 n ) O(3^m×4^n) O(3m×4n),其中 m 是输入中对应 3 个字母的数字个数(包括数字 2、3、4、5、6、8),n 是输入中对应 4个字母的数字个数(包括数字 7、9),m+n 是输入数字的总个数。当输入包含 m 个对应 3 个字母的数字和 n个对应 4 个字母的数字时,不同的字母组合一共有 3 m × 4 n 3^m×4^n 3m×4n种,需要遍历每一种字母组合。

空间复杂度:O(m+n),其中 m 是输入中对应 3 个字母的数字个数,n 是输入中对应 4 个字母的数字个数,m+n是输入数字的总个数。

注:仅供学习参考!

题目来源:力扣

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例

全文下载链接&#xff1a;http://tecdat.cn/?p21317本文提供了运行分布滞后非线性模型的示例&#xff0c;同时描述了预测变量和结果之间的非线性和滞后效应&#xff0c;这种相互关系被定义为暴露-滞后-反应关联&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。…

C语言文件操作

目录序言文件程序文件&数据文件程序文件数据文件文本文件&二进制文件文件名操作初阶打开&关闭文件fopen读写文件fputc & fgetc文件缓冲区文件指针操作进阶打开方式"w"(只写)"r"(只读)"a"(追加)文件的顺序读写fgets & fputsf…

Mac安装rabbitmq延迟队列插件

Mac安装rabbitmq延迟队列插件我是通过brew安装的rabbitmq&#xff0c;没有安装Homebrew的需要安装一下查看我们rabbitmq版本&#xff0c;我这里的版本是3.11.3&#xff0c;我们下载的插件大版本必须是3.11 brew info rabbitmq下载rabbitmq_delayed_message_exchange插件&#…

虹科分享 | 终端安全防护 | 网络安全术语列表(终篇)

如果你的工作或者生活与网络安全有关&#xff0c;你就知道它使用了自己独特的、不断发展的语言。术语和缩略语受到网络安全专家的喜爱。因此&#xff0c;我们创建了一个全面的网络安全词汇表&#xff0c;解释了常用的网络安全术语、短语和技术。我们设计此列表是为了揭开安全专…

春夏秋冬-第12届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第89讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

[附源码]计算机毕业设计springboot车险销售管理系统论文

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MySQL软件常见操作

1登录MySQL 登录&#xff0c;如果你配置了环境变量就可以winr&#xff0c;在运行框输入cmd&#xff0c;输入登录命令 第一种&#xff1a;直接输入密码 mysql -uroot -p(你的密码没有有括号) 第二种不直接输入密码 mysql -uroot -p 前面两种都是localhost登录 下面是完整版 m…

流媒体传输 - RTSP 协议认证过程

Rtsp 认证 主要分为两种&#xff1a; 基本认证 &#xff08;Basic authentication&#xff09;和 摘要认证 &#xff08;Digest authentication&#xff09; 基本认证是 HTTP 1.0 提出的认证方案&#xff0c;其消息传输不经过加密转换因此存在严重的安全隐患。 摘要认证是 H…

[附源码]计算机毕业设计springboot房屋租赁信息系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spring Boot 实现万能文件在线预览-开源学习一

Spring Boot 实现万能文件在线预览-开源学习一 1. 项目特性 支持word excel ppt&#xff0c;pdf等办公文档支持txt,java,php,py,md,js,css等所有纯文本支持zip,rar,jar,tar,gzip等压缩包支持jpg&#xff0c;jpeg&#xff0c;png&#xff0c;gif等图片预览&#xff08;翻转&am…

Linux信号基础

目录 一&#xff0c;信号的产生 1&#xff0c;终端按键 2&#xff0c;调用系统函数向进程发送信号 (1)、kill:给指定的进程发送指定的命令 (2)、raise:自己给自己发信号 ​(3)、abort&#xff1a;让当前进程收到信号异常终止 3,由硬件产生 (1)、比如除零错误&#xff0c…

Shiro框架

权限管理&#xff0c;一般指根据系统设置的安全规则或者安全策略&#xff0c;用户可以访问而且只能访问自己被授权的资源。权限管理几乎出现在任何系统里面&#xff0c;只要有用户和密码的系统。 很多人常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混…

Vue2 中使用“全局事件总线“实现任意组件间通信

前言&#xff1a; vue 中组件间通信的方式有很多 ------ 父传子propos&#xff0c;全局事件总线&#xff0c;消息订阅&#xff0c;vuex......等等&#xff0c;这篇文章带大家学习一下通过全局事件总线来实现任意组件间的通信。 文章目录&#xff1a; 一&#xff1a;什么是全局…

细节决定成败,Qlik数据洞察如何助力SEB化身“鹰眼”?

“随业务版图扩张&#xff0c;目前公司需要处理的数据集海量增长&#xff0c; SEB 的数据分析面临着越来越大的挑战&#xff0c;光是等待数据集计算的时间&#xff0c;都需要等待半天&#xff0c;效率低下导致我们很多工作都无法开展&#xff0c;我们需要一款更高效的 BI 工具”…

普元中间件Primeton AppServer6.5安装(Windows)

本文在Windows环境下安装普元中间件Primeton AppServer6.5&#xff08;以下简称PAS&#xff09; 一、安装前准备 1.1使用软件版本 Primeton_AppServer_6.5_Enterprise_Editio&#xff08;Windows&#xff09; 1.2安装前注意注意的点 1.需要提前安装JDK&#xff0c;并配置J…

神经网络和深度学习-加载数据集DataLoader

加载数据集DataLoader Dataloader的概念 dataloader的主要目标是拿出Mini-Batch这一组数据来进行训练 在处理多维特征输入这一文章中&#xff0c;使用diabetes这一数据集&#xff0c;在训练时我们使用的是所有的输入x&#xff0c;在梯度计算采用的是随机梯度下降&#xff08…

本地启动springboot项目失败端口问题

异常关键字&#xff1a; Cannot assign requested address: bind 排查结果 配置了环境变量【SERVER_ADDRESS】 网上搜了有的回答是端口占用&#xff0c;是不对的&#xff0c;端口占用的异常是这个【Web server failed to start. Port 8282 was already in use.】 排查结果…

麦芽糖-聚乙二醇-阿霉素maltose-Doxorubicin

麦芽糖-聚乙二醇-阿霉素maltose-Doxorubicin 中文名称&#xff1a;麦芽糖-阿霉素 英文名称&#xff1a;maltose-Doxorubicin 别称&#xff1a;阿霉素修饰麦芽糖&#xff0c;阿霉素-麦芽糖 还可以提供PEG接枝修饰麦芽糖&#xff0c;麦芽糖-聚乙二醇-阿霉素,Doxorubicin-PEG-…

无线传感器网络:定位、安全与同步

文章目录LocalizationRanging TechniquesReceived Signal Strength (RSS)Time of Arrival (ToA)Time Difference of Arrival (TDoA)Angle of Arrival (AoA)Range-Based Localization ProtocolsTriangulationTrilaterationIterative and Collaborative MultilaterationSecurityC…

sipp: bind_local;watchdog timer trip

文章目录作为服务端时&#xff0c;source ip 随机的问题命令示例bind_localwatchdog_minor_maxtriggers作为服务端时&#xff0c;source ip 随机的问题 https://sipp.sourceforge.net/doc/reference.html https://github.com/SIPp/sipp/issues/83 https://github.com/SIPp/sip…