力扣电话号码的组合

文章目录

  • 题目说明
  • 做题思路
  • 代码实现
  • 代码解析

题目链接

题目说明

在这里插入图片描述
首先我们先分析一下这个题目题目中说呢先给出一个字符串这个字符串其实就是这个九键数字我们要按照要求将数字所代表的字符进行自由组合形成一个字符串并且这个字符串的长度和输入的数字字符串长度相同,比如说输入一个“23”那么23所自由组成的每个字符串的长度都为2,

做题思路

其实这个题目是一个很标准的一个dfs类型的题目那么我们在做的过程中应该如何做呢?很简单肯定是暴力组合对吧,那么我们看一下下面的图片假如说输入的是”23“这两个数字

在这里插入图片描述
首先呢我们可以先看一下假如说是23这两个数字的话2代表的是abc 3代表的是def,那么我们以此为列的话得出当首字符是a的时候组合就是ad,ae,af同样的b和c也是如此在这里我们可以看到a组合完毕之后我们还需要将b和c组合也给列出来,那么也就是说我们可以利用函数递归这样一个特性去逐步的遍历他们每个字符串,也就是说最外层是一个for循环然后for循环里面是一个函数递归,相当于又是一个循环外面的循环负责遍历2这个数字代表的字符内层函数遍历则是负责遍历3所代表的每个字符,那么我们来进行一下代码实现吧。

代码实现

char a[10][5]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
class Solution {
public:
    void dfs(vector<string>&s,int val,string str,string digits)
    {
        if(val==digits.size())
        {
            s.push_back(str);
            return;
        }
        int t=digits[val]-'0';
        string p=a[t];
        for(int i=0;i<p.size();i++)
        {
            dfs(s,val+1,str+p[i],digits);
        }
    }


    vector<string> letterCombinations(string digits) {
        vector<string>s;
        if(digits.empty())
        {
            return s;
        }
        dfs(s,0,"",digits);
        return s;
    }
};

代码解析

对于这个代码呢我们有这几个地方需要解释说明一下,首先就是第一个关于str的传递

dfs(s,val+1,str+p[i],digits);

请看这里我们的str其实就是以某个字符为开头的所有字符集的一种组合我们需要把这种组合给放入s中因此这里我们需要这个str只能在他那一层是包含的有某个字符串的在上一层是不能包含该字符的因此这里有一个特殊处理就是我们并没有选择将str+=p[i]而是选择令下一层的str接收str+p[i]。此外就是二维字符串a我们利用他从而达到可以获得每个数字代表的字符串的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

element-ui tree树形结构全选、取消全选,展开收起

控制树形结构全选、取消全选&#xff0c;展开收起 <template><div><!-- 添加 ref"tree" 属性--><el-tree:data"data"show-checkboxdefault-expand-allnode-key"id"ref"tree"highlight-current:props"defa…

使用Python操纵Word自动编写离职报告

目录 一、背景介绍 二、技术原理 三、实现步骤 1、安装python-docx库 2、创建Word文档 3、添加标题和内容 4、添加表格和图片 5、设置样式和格式化文本 6、保存文档 四、注意事项与建议 总结 随着现代社会的发展&#xff0c;自动化和智能化已经成为各行各业追求的目…

Pytorch各种Dropout层应用于详解

目录 torch框架Dropout functions详解 dropout 用途 用法 使用技巧 参数 数学理论公式 代码示例 alpha_dropout 用途 用法 使用技巧 参数 数学理论公式 代码示例 feature_alpha_dropout 用途 用法 使用技巧 参数 数学理论 代码示例 dropout1d 用途 用…

每日一记:一个windows的bat脚本工具集

最近在工作上遇到要校验文件的问题&#xff0c;例如&#xff0c;下载了一个文件之后&#xff0c;通过查看文件的md5来校验文件是否完整&#xff0c;这个动作在linux上很简单&#xff0c;但在windows上也不难&#xff0c;可以通过 certutil 命令实现&#xff0c;该命令通常可用于…

vue流程图

效果图 组件 <template><div class="processBox" v-if="list.length"><div class="childs"><div class="child" v-for="(item,index) in list" :key="item.id +-child-+index"><div…

指定Top名校|管理学教师拜师香港理工大学院士麾下访学

X老师拟自费赴香港访学&#xff0c;并指定了香港Top5之内的高校。申请一个月后&#xff0c;我们落实了香港理工大学的访学职位&#xff0c;导师为香港工程科学院和国际系统与控制科学院的两院院士、讲座教授。 X老师背景&#xff1a; 申请类型&#xff1a;自费访问学者 工作背…

迷你洗衣机哪个牌子好用?家用小型洗衣机推荐

迷你洗衣机主要分为立式洗衣机、壁挂式洗衣机&#xff0c;在特定的情况下是能够为用户提供一定的方便的。就好比如说宝宝的衣物需要和大人的分开洗&#xff0c;或者我们日常都所要清洗内衣裤、袜子等等这些贴身的衣物&#xff0c;直接将这些小件的衣物放进到迷你洗衣机中分类单…

2024“华数杯”国际赛(B题ICM)|光伏发电|国际大学生数学建模竞赛建模解析,小鹿学长带队指引全代码文章与思路

我是小鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 完整内容可以在文章末尾领取&#xff01; 问题重述 这个问题涉及创建一个数学模型&#xff0c;以解决与光伏发电和中国电力供应相关的各个方面。 电…

计算机网络-甘晴void学习笔记

计算机网络 计科210X 甘晴void 202108010XXX 文章目录 计算机网络期中复习1计算机网络和因特网1.1 因特网1.2 网络边缘1.3 网络核心1.4 分组交换的时延/丢包和吞吐量1.5 协议层次与服务模型 2 应用层原理2.1 应用层协议原理2.2 Web和Http2.3 因特网中的电子邮件2.4 DNS&#x…

史星海先生入选 2024中英双语版《世界名人录》【综合22卷·文化卷】(中国)

史星海(中国) Shi Xinghai (China) 经海内外各界名人及世界相关权威文化机构的大力举荐&#xff0c;鉴于史星海先生在国内外文艺&#xff0c;经济&#xff0c;政治等领域的重大影响力&#xff0c;荣幸获得入编大型人物辞书2024中英双语版《世界名人录》&#xff08;综合卷文化…

Open CASCADE学习|显示模型

目录 1、编写代码 Viewer.h Viewer.cpp ViewerInteractor.h ViewerInteractor.cpp helloworld.cpp 2、配置 3、编译运行 1、编写代码 Viewer.h #pragma once ​ #ifdef _WIN32 #include <Windows.h> #endif ​ // Local includes #include "ViewerInteract…

各省快递量数据, shp+excel,2001-2021年,已实现数据可视化

基本信息. 数据名称: 各省快递量数据 数据格式: shpexcel 数据时间&#xff1a;2001-2021年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1a_2001快递量/万件_2001年2a_2002快递量/万件_2002年3…

热压机PLC数据采集远程监控物联网解决方案

热压机PLC数据采集远程监控物联网解决方案 随着工业4.0时代的到来&#xff0c;智能制造已经成为制造业发展的重要方向。在热压机领域&#xff0c;PLC数据采集远程监控物联网解决方案为提高生产效率、降低维护成本、优化生产工艺提供了有效的手段。 一、热压机PLC数据采集远程…

一文带你揭秘淘宝终端技术

作者&#xff1a;周杰&#xff08;寻弦&#xff09; 在这个数字化迅速发展的时代&#xff0c;技术的每一次飞跃都不仅仅意味着一个产品的升级&#xff0c;更是对未来世界的一次大胆想象。从 PC 到 iPhone&#xff0c;从 Model 3 到 ChatGPT&#xff0c;都引领了全新的一个行业。…

Linux miniGUI移植分析

框架介绍 常用GUI程序对比 https://www.cnblogs.com/zyly/p/17378659.html MiniGUI分为底层的GAL&#xff08;图形抽象层&#xff09;和IAL&#xff08;输入抽象层&#xff09;&#xff0c;向上为基于标准POSIX接口中pthread库的Mini-Thread架构和基于Server/Client的Mini-L…

护眼灯有没有护眼的效果啊?有效果的护眼灯推荐

近几年&#xff0c;青少年近视人数呈现猛增的势头&#xff0c;且低龄化趋势也越来越明显&#xff0c;社会各界开始重视对青少年视力问题的关注。伤害视力的原因有很多种&#xff0c;其中没有良好的光线条件是问题之一&#xff0c;当使用的台灯不合格&#xff0c;频闪与蓝光问题…

渗透测试(12)- WireShark 网络数据包分析

目录 1、WireShack 简介 2、WireShark 基本使用方法 3、 WireShack 抓包分析 3.1 Hypertext Transfer Protocol (应用层) 3.2 Transmission Control Protocol (传输层) 3.3 Internet Protocol Version 4(网络层) 3.4 Ethernet Il (链路层): 数据链路层以太网头部信息 …

ZooKeeper 实战(五) Curator实现分布式锁

文章目录 ZooKeeper 实战(五) Curator实现分布式锁1.简介1.1.分布式锁概念1.2.Curator 分布式锁的实现方式1.3.分布式锁接口 2.准备工作3.分布式可重入锁3.1.锁对象3.2.非重入式抢占锁测试代码输出日志 3.3.重入式抢占锁测试代码输出日志 4.分布式非可重入锁4.1.锁对象4.2.重入…

数据结构之串|数组|广义表

串 数组 广义表 总结&#xff1a;

【JS逆向学习】1号店

逆向目标 接口&#xff1a;https://passport.yhd.com/publicPassport/login.do加密参数&#xff1a; credentials.usernamecredentials.password 逆向过程 老规矩&#xff0c;输入用户名和密码&#xff0c;点击登录&#xff0c;然后过滤 XHR 请求 进入 Initiator 随便找个…