leetcode 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’] 的一个数字。
在这里插入图片描述

概述

这是一道dfs的题目
首先为什么他是一道dfs的题目?
dfs是一个遍历的方式,该题就是按键映射的字母的排列组合,所以这道题就是一道dfs的题目
怎么处理dfs的题目?
对于dfs的题目处理方式:
1.写出终止条件
2.候选节点的筛选
3.回溯

代码

class Solution {
public:string temp;// 注意审题,前面两个用不到,所以置为空串vector<string> board = {"", "", "abc", "def", "ghi","jkl","mno","pqrs","tuv","wxyz"};// 用来存放结果的空串vector<string> ans;void dfs(int pos,string digits){//1. 终止条件if(pos==digits.size()){ans.push_back(temp);return;}// 候选节点的筛选// 表示键盘按到了第几个键int nums=digits[pos]-'0';for(int i=0;i<board[nums].size();i++){temp.push_back(board[nums][i]);dfs(pos+1,digits);temp.pop_back();//回溯}}vector<string> letterCombinations(string digits) {if(digits.size()==0){return {};}dfs(0,digits);return ans;}
};

代码解释

参数 digits 表示输入的数字序列。

代码首先处理边界条件,即如果输入的数字序列长度为 0,直接返回一个空的向量。

然后调用 dfs 函数来进行深度优先遍历,获取结果。

在 dfs 函数中,采用递归的方式实现深度优先遍历。该函数接受两个参数,一个是要处理的输入数字序列,另一个是当前的层数。在初始调用时,层数为 0,可以理解为第一层,即选取第一个数字对应的字符;第二层则是选取第二个数字对应的字符,依此类推。

在函数内部,递归的终止条件是根据数字序列的长度来确定的,即 pos == digits.size(),表示遍历结束。

每次递归调用时,函数会选取当前位置的数字,并遍历该数字对应的字符集合,将选取的字符与后续字符进行组合。然后,将组合结果与当前字符拼接,形成新的组合。这样,通过递归调用和不断拼接字符,就可以得到所有可能的组合。

在递归结束后,为了避免 temp 影响到后续的遍历,需要进行回溯操作,即将最后一个字符从 temp 中移除。

最后,通过使用 return 关键字来结束递归。

希望以上总结对你有帮助,如果有任何进一步的问题,请随时提问。

在这里插入图片描述

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

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

相关文章

2024年烟花爆竹储存证考试题库及烟花爆竹储存试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年烟花爆竹储存证考试题库及烟花爆竹储存试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机…

实践学习PaddleScience飞桨科学工具包

实践学习PaddleScience飞桨科学工具包 动手实践&#xff0c;在实践中学习&#xff01;本项目可以在AIStudio平台一键运行&#xff01;地址&#xff1a;https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错&#xff0c;再执行一次即可。若碰到莫名其妙的…

JavaScript-循环嵌套断点调试-笔记

1.do...while循环 do while语法结构&#xff1a; 循环初始值&#xff1b; do{ //代码&#xff1b; 增量&#xff1b; }while(循环条件)&#xff1b; <script> // 输出十句 &#xff1a; 你好世界 var …

数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求——利用transform的scale属性缩放,缩放整个页面。

文章目录 一、需求背景&#xff1a;二、需求分析&#xff1a;三、选择方案&#xff1a;四、实现代码&#xff1a;五、效果预览&#xff1a;六、封装组件&#xff1a; 一、需求背景&#xff1a; 数据可视化大屏是一种将数据、信息和可视化效果集中展示在一块或多块大屏幕上的技…

flink 1.18 sql demo

flink 1.18 sql demo 更换flink-table-planner 为 flink-table-planner-loader pom.xml <dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-api-java-uber --><dependency><groupId>org.apache.flink</groupId…

2020年财政收支

偶感兴趣&#xff0c;花了点时间整理 有兴趣的可以参照下面的链接整理完整2022年的数据&#xff0c;2023年的数据还有12月份的数据未出&#xff0c;估计在这几天出。 附 2022年的财政收支情况 2022年基金支出预算表 2020年的社保收入是7.6万亿。 上图个税金额写错了&#xff0c…

信息安全应急演练方案-模板

文章目录 信息安全应急演练方案一、应急演练总体目标二、安全应急演练的具体目标为&#xff1a;三、应急演练计划安排&#xff1a;3.1 黑客攻击服务器应急演练时间安排&#xff1a;演练地点&#xff1a;演练步骤&#xff1a; 3.2 大规模病毒&#xff08;含恶意软件&#xff09;…

Mindspore 公开课 - CodeGeeX

CodeGeeX: 多语言代码生成模型 CodeGeeX 是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现&#xff0c;在鹏城实验室“鹏城云脑II”中的192个节点&#xff08;共1536个国产昇腾910 AI处理器&#xff09;上训练而成。截至2022年6月22日&…

数据库结构文档生成方法二(EZDML)

EZDML 下载链接&#xff1a;EZDML - 下载 我们常用的是数据建模有PowerDesigner,EZDML也是一款数据建模工具&#xff0c;而且功能很多&#xff0c;除了生成sql&#xff0c;还可以生成前端后端代码等等。 我们直接下载最新版后点击安装&#xff0c;打开后会默认打开示例&#…

基于springboot数码论坛系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把数码论坛与现在网络相结合&#xff0c;利用java技术建设数码论坛系统&#xff0c;实现数码论坛的信息化。则对于进一步提高数码论坛发展&#xff0c;丰富数码论坛经验能起到不少的促进作用。 数码论坛系统能够通过互联网得到广泛…

window系统安装MySQL -- MySQL(1)

第一步&#xff1a; 下载mysql安装包 1&#xff09;打开MySQL官方链接&#xff1a;https://www.mysql.com 2&#xff09;选择 DOWNLOADS 3&#xff09;往下滑&#xff0c;点击社区版本下载 4&#xff09;点击 MySQL installer for Windows 5&#xff09;点击安装 第二步&#…

2024年腾讯云服务器购买价格,真便宜

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

细说JavaScript对象(JavaScript对象详解)

在JavaScript中对象作为数据类型之一&#xff0c;它的数据结构区别于其余5中数据类型&#xff0c;从数据结构角度看对象就是数据值的几个&#xff0c;其书就结构就是若干组名值对&#xff0c;类似于其他语言中的哈希、散列 关联数组等&#xff0c;但对象在JavaScript中不仅仅扮…

如何通过pytest+requests+allure自动化测试接入Jenkins?测开必备

最近在这整理知识&#xff0c;发现在pytest的知识文档缺少系统性&#xff0c;这里整理一下&#xff0c;方便后续回忆。 在python中&#xff0c;大家比较熟悉的两个框架是unittest和pytest&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也…

2024腾讯云服务器购买指南一步步全流程攻略(超详细)

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

flutter base64图片保存到相册

首先base64转成uint8List&#xff0c;然后再用插件保存到相册&#xff08;没有内置的方法处理&#xff09; 保存图片的插件 photo_manager: ^2.6.0完整代码如下 //保存图片savePhotoJs(String base64String) async {Uint8List bytes UriData.parse(base64String).contentAsB…

音视频中的DTS和PTS区别

一、什么是PTS、DTS 1.PTS:即显示时间戳&#xff0c;用来告诉播放器在什么时候显示这一帧数据 2.DTS:即解码时间戳&#xff0c;用来告诉播放器在什么时间来解码这一帧的数据 3.GOP&#xff1a;MPEG使用的一种视频压缩技术 总的来说PTS和DTS用于指导播放器端的行为 二&…

导图解房(04)验房流程总结

本章主要是对模型 流程的使用&#xff0c;雷老板也说过&#xff1a;99%的问题实际上都有明确的解决方案和流程&#xff0c;只要问一问就好了&#xff0c;验房这件事而也是如此。 1 验三书一表一证 验房第一步并不是直接看房&#xff0c;而是看三书一表一证&#xff0c;先确保…

基于SPI的插件式开发实现方案之@AutoService+ServiceLoader介绍及Dolphinscheduler中的实际应用

1.插件化开发概述 插件化开发模式正在很多编程语言或技术框架中得以广泛的应用实践&#xff0c;比如大家熟悉的jenkins&#xff0c;docker可视化管理平台rancher&#xff0c;以及日常编码使用的编辑器idea&#xff0c;vscode等。 实现服务模块之间解耦的方式有很多&#xff0…

PHP中excel带图片数据导入

前提&#xff1a;有个需求需要实现带图片的excel数据导入数据库中&#xff0c;发现PHPExcel - Excel 操作库已经停止维护&#xff0c;在PHP8的版本中&#xff0c;有些语法不支持&#xff0c;报错一堆&#xff0c;改了一堆&#xff0c;又还有一堆。所以决定找个替代的扩展&#…