leetcode 17 电话号码字母组合

news2024/10/6 0:31:35

题目

给定一个仅包含数字 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.coloradmin.cn/o/1385743.html

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

相关文章

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面&#xff1a;数据集对应应用场景&#xff0c;不同的应用场景有不同的检测难点以及对应改进方法&#xff0c;本系列整理汇总领域内的数据集&#xff0c;方便大家下载数据集&#xff0c;若无法下载可关注后私信领取。关注免费领取整理好的数据集资料&#xff01;今天分享…

【AIGC】美丽自然风光的一组绝美高清图提示词解析

好的&#xff0c;我可以帮你提取关键信息并整理到表格中。以下是根据你提供的描述&#xff0c;整理的表格&#xff1a; 关键信息描述场景夜晚的海滩风格奇幻色彩蓝色和绿色的荧光光源巨大的月亮、精灵般的光芒、星星、星斑海面泛着荧光沙滩金色&#xff0c;闪烁着光芒夜空繁星…

Odrive 学习系列二:将烧录工具从ST-Link V2修改为JLink

一、背景: 通过观察odrive解压后的内容,可以看到在下面配置文件及makefile文件中的配置设置的均为openOCD + stlink v2,例如makefile中: # This is only a stub for various commands. # Tup is used for the actual compilation.BUILD_DIR = build FIRMWARE = $(BUILD_DI…

Camtasia2024最新版本如何进行电脑录制屏幕?

在现在的网络互联网时代&#xff0c;越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频&#xff0c;也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音&#xff0c;做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

酷开系统 | 酷开科技挖掘与消费者深度链接的价值共鸣

市场的变化更迭速度日新月异&#xff0c;随着OTT行业的迅速发展&#xff0c;以及品牌方对于营销水准要求的逐步提高&#xff0c;以大屏为主的营销方向已成为目前营销发展的主要趋势。在互联网信息化发展的大趋势下&#xff0c;酷开科技不拘泥于现有格局&#xff0c;不断提升自身…

LeetCode 589. N 叉树的前序遍历

589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [1,nul…

打破效率瓶颈:运用Excel提升文秘与行政工作质量

文章目录 一、数据整理二、数据分析三、报表制作四、图表展示五、模板应用六、宏编程七、安全与隐私《Excel高效办公&#xff1a;文秘与行政办公&#xff08;AI版&#xff09;》编辑推荐内容简介作者简介目录获取方式 在现代企业中&#xff0c;文秘与行政办公人员的工作内容繁杂…

智慧公厕!高科技手段提升城市品质与形象

近年来&#xff0c;随着科技的不断进步&#xff0c;智慧公厕正以其独特的功能和对公共厕所全方位的信息化和数字化&#xff0c;成为智慧城市建设中的重要一环&#xff0c;悄然崭露头角。如广州中期科技有限公司自主研发的智慧公厕管理系统&#xff0c;借助于厕位监测、环境监测…

linux命令太多记不住吗?怎么办 ?于是推出了这样一套教程。

1.帮助命令 1.1 help命令 #语法格式&#xff1a; 命令 --help #作用: 查看某个命令的帮助信息 # 示例: # ls --help 查看ls命令的帮助信息# netstat --help 查看netstat命令的帮助信息1.2 man命令 #语法格式&#xff1a; man 命令 #作用: 查看某个命令的帮助手册 # 示例: …

数据结构期末复习(C语言版)

一、绪论 1.数据结构的术语 数据&#xff1a;所有能输入计算机并被计算机程序处理的符号的总称&#xff1b;数据元素&#xff1a;数据的基本单位&#xff1b;数据项&#xff1a;组成数据元素的、有独立含义的、不可分割的最小单位&#xff1b;数据对象&#xff1a;是性质相同…

WEB前端人机交互导论实验-实训6 表格与表格页面布局

1.项目1 设计《网络主题研讨会》日程表&#xff1a; A.题目要求&#xff1a; 使用表格标记和标记属性设计《网络主题研讨会》日程表。效果图如下&#xff1a; B.思路&#xff1a; 【1】CSS 样式: #div0&#xff1a;为主容器设置背景图片&#xff08;images61-4.png&#x…

生成式对抗网络GAN

Generative Adversarial Nets由伊恩古德费洛&#xff08;Ian J.Goodfellow&#xff09;等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…

【无主之地3】最详细的补丁教程(酸奶公园)

【无主之地3】最详细的补丁教程&#xff08;酸奶公园&#xff09; steam已有游戏 1.迅雷种子下载文件&#xff0c;只用下载AddtionalContent这一个&#xff0c;放在文件夹OakGame下 2.将文件夹Engine&#xff1e;Binaries&#xff1e;ThirdParty&#xff1e;steamworks&a…

防蓝光护眼灯有用吗知乎 防蓝光护眼灯的作用

前段时间去了几个有小孩的家庭拜访&#xff0c;发现现在很多父母都是直接用家里的灯或者超市几十块钱买的台灯给小孩子写作业用的&#xff0c;最后还是只能花大价钱给孩子配眼镜&#xff0c;这样子做得不偿失&#xff0c;因为他们不知道家里灯光对视力的影响。给孩子学习用的最…

Cypress安装与使用教程(4)—— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎&#xff0c;它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例&#xff0c;能够让的大家快速入门并在实际项目中应用。 官网&#xff1a;Launch Presto: Local download, JDBC, Docker…

【深度学习:构建医学图像】如何构建医学图像的 QA 工作流程

【深度学习&#xff1a;构建医学图像】如何构建医学图像的 QA 工作流程 第 1 步&#xff1a;选择并划分数据集第 2 步&#xff1a;准备使用多个盲注进行注释第三步&#xff1a;建立图像标注协议第 4 步&#xff1a;在少数样本上练习医学图像注释第 5 步&#xff1a;发布第一批图…

Nodejs 入门8 NeDB 轻量级的Node.js 数据库

Nodejs 入门8 NeDB 轻量级的Node.js 数据库 一、简介1. 什么是 Nedb&#xff1f;2. 特性和优势1. 轻量级2. 简单的API3. 内存和磁盘存储 二、如何开始使用 Nedb1. 安装 Nedb2. 创建数据库实例&#xff08;1&#xff09;简单示例&#xff08;2&#xff09; options 参数说明&…

为什么我说小公司也一定要用K8S

Kubernetes是谷歌以Borg为前身&#xff0c;基于谷歌15年生产环境经验开源的一个项目。Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台&#xff0c;其遵循主从式架构设计&#xff0c;其组件可以分为工作节点&#xff08;Node&#xff09;组…