力扣电话号码的组合

文章目录

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

题目链接

题目说明

在这里插入图片描述
首先我们先分析一下这个题目题目中说呢先给出一个字符串这个字符串其实就是这个九键数字我们要按照要求将数字所代表的字符进行自由组合形成一个字符串并且这个字符串的长度和输入的数字字符串长度相同,比如说输入一个“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我们利用他从而达到可以获得每个数字代表的字符串的作用。

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

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

相关文章

华为端口安全常用3种方法配置案例

安全动态mac地址学习功能 [Huawei]int g0/0/01 interface GigabitEthernet0/0/1 port-security enable //开启安全 port-security max-mac-num 2 //最多为2个mac地址学习 port-security protect-action restrict //丢包带警告 port-security aging-time 1 //mac地址的老化时间…

FFmpeg连载6-音频重采样

今天我们的实战内容是将音频解码成PCM&#xff0c;并将PCM重采样成特定的采样率&#xff0c;然后输出到本地文件进行播放。 什么是重采样&#xff1f; 所谓重采样&#xff0c;一句话总结就是改变音频的三元素&#xff0c;也就是通过重采样改变音频的采样率、采样格式或者声道数…

Github 2024-01-16 Python开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-16统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目10HTML项目1 精心策划的Python资源列表 创建周期&#xff1a;3490 天开发语言&#xff1a;Python…

在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常

前言 在 ASP.NET Core Web API 中&#xff0c;异常筛选器&#xff08;Exception Filter&#xff09;是一种用于处理发生在 Web API 控制器或管道中的异常的机制。 异常筛选器可以捕获和处理应用程序中发生的异常&#xff0c;当系统中出现未经处理的异常的时候&#xff0c;异常…

小程序基础学习(事件处理)

原理&#xff1a;组件内部设置点击事件&#xff0c;然后冒泡到页面捕获点击事件 在组件内部设置点击事件 处理点击事件&#xff0c;并告诉页面 页面捕获点击事件 页面处理点击事件 组件代码 <!--components/my-info/my-info.wxml--> <view class"title"…

基于Springboot的网上点餐系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的网上点餐系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&am…

docker-compose和docker compose的区别

在docker实际使用中&#xff0c;经常会搭配Compose&#xff0c;用来定义和运行多个 Docker 容器。使用时会发现&#xff0c;有时候的指令是docker-compose&#xff0c;有时候是docker compose&#xff0c;下面给出解释。 docker官方文档&#xff1a;https://docs.docker.com/c…

iphone 5s的充电时序原理图纸,iPAD充电讲解

上一篇写了iphone 5的时序。那是电池供电的开机时序。iphone 5s也是差不多的过程&#xff0c;不说了。现在看iphone5s手机充电时候的时序。iphone5s充电比iphone5充电简单了很多。 首先是usb接口接到手机上&#xff0c;usb线连接到J7接口上。J7接口不只是接usb&#xff0c;还能…

[NSSCTF Round#16 Basic]RCE但是没有完全RCE

RCE但是没有完全RCE wp 题目代码&#xff1a; 第一关 <?php error_reporting(0); highlight_file(__file__); include(level2.php); if (isset($_GET[md5_1]) && isset($_GET[md5_2])) {if ((string)$_GET[md5_1] ! (string)$_GET[md5_2] && md5($_GET[m…

IntelliJ IDEA使用学习

一、安装教程 网上自行下载&#xff0c;CSDN不然过审二、使用教程 2.1 快捷键操作与设置 设置 Setting——>按键映射——>选择顺手的系统快捷键 编写代码 CtrlShift Enter&#xff0c;语句完成。 “&#xff01;”&#xff0c;否定完成&#xff0c;输入表达式时按 …

现代控制理论基础

在学习卡尔曼滤波、粒子滤波、隐马尔可夫模型时候&#xff0c;经常会提到状态方程的概念&#xff0c;这边联想到当时学习过的一门课程现代控制理论&#xff0c;这边就简单回顾一下吧。在回顾之前&#xff0c;串联下高等数学中微分方程的知识点。 一. 微分方程 高等数学上册第…

C++ 最短路总结 朴素Dijkstra算法 || 模版题,求最短路

算法选择&#xff1a; 稠密图用邻接矩阵写&#xff0c;稀疏图用邻接表写。 朴素dijkstra&#xff1a; 给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;所有边权均为正值。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点…

Win10电脑关闭OneDrive自动同步的方法

在Win10电脑操作过程中&#xff0c;用户想要关闭OneDrive的自动同步功能&#xff0c;但不知道具体要怎么操作&#xff1f;首先用户需要打开OneDrive&#xff0c;然后点击关闭默认情况下将文档保存到OneDrive选项保存&#xff0c;最后关闭在这台电脑上同步设置保存就好了。接下来…

认识监控系统zabbix

利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 了解zabbix zabbix是什么&#xff1f; ●zabbix 是一个基于 Web 界面的提供分布…

Android Studio下载gradle反复失败

我的版本&#xff1a;gradle-5.1.1 首先检查设置路径是否正确&#xff0c;参考我的修改&#xff01; 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载&#xff0c;我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

uni-app的学习【第三节】

五 运行环境判断与跨端兼容 uniapp为开发者提供了一系列基础组件,类似HTML里的基础标签元素,但uni-app的组件与HTML不同,而是与小程序相同,更适合手机端使用。 虽然不推荐使用 HTML 标签,但实际上如果开发者写了`div`等标签,在编译到非H5平台时也会被编译器转换为 `view`…

学习JavaEE的日子 day12 构造方法 类的制作

Day12 需求&#xff1a;创建人类的对象&#xff0c;并操作对象 分析&#xff1a; 人类 - Person 属性&#xff1a;name、sex、age 方法&#xff1a;eat、sleep 场景&#xff1a;创建多个对象&#xff0c;去操作对象 //测试类&#xff1a;该类中有main方法&#xff0c;测试我们写…

Elasticsearch的基本功能和使用

Elasticsearch &#xff0c;简称为 ES&#xff0c;是一款非常强大的开源的高扩展的分布式全文 检索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的 存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能. 官网:https://www.elastic.c…

Spark SQL基础

SparkSQL基本介绍 什么是Spark SQL Spark SQL是Spark多种组件中其中一个,主要是用于处理大规模的结构化数据 什么是结构化数据: 一份数据, 每一行都有固定的列, 每一列的类型都是一致的 我们将这样的数据称为结构化的数据 例如: mysql的表数据 1 张三 20 2 李四 15 3 王五 1…

【揭秘AI】穿越时光隧道,探秘AI起源与发展01

算盘 被誉为世界上最古老的计算机之一&#xff0c;是一种手动操作的计算工具&#xff0c;起源于中国。它主要由框、梁和珠子组成&#xff0c;通过移动珠子在档位上的位置来进行加减乘除运算。算盘的发明时间可以追溯到公元前或公元初期&#xff0c;据历史记载&#xff0c;东汉…