leetcode电话号码的字母组合C++实现教程

news2024/11/24 1:17:30

链接: 电话号码的字母组合
在这里插入图片描述

class Solution {

    char* PNumStr[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
	
	//因为每次都需要执行拷贝,不高效,所以并不建议使用
    //string PNumStr[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};

public:

    void Recursion(vector<string>& rstr,string digits,int size,string CBS)
    {
        if(size == digits.size())
        {
           rstr.push_back(CBS);
           return;
        }

        //获取按键输入的数字
        int i = digits[size] - '0';
        //递归把字符总结在一块combine
        string str = PNumStr[i];
        for(auto ch : str)
        {
            Recursion(rstr,digits,size + 1,CBS+ch);
        }
    }

    vector<string> letterCombinations(string digits) {
        vector<string> rstr;//返回结果 
        if(digits.empty())
        {
            return rstr;
        }
        string CBS;//用于插入字符串
        Recursion(rstr,digits,0,CBS);
        return rstr;
    }
};

在没有开始操作时,系统给点的函数为以下形式
在这里插入图片描述
如图所示我们看到,函数要求有返回值,且返回值为vector<string>类型,传入的参数类型为string类型

我们可以从图看出,它们的组合方式分别为下图所示
在这里插入图片描述

有了上图的大体思路和题目要求和,我们就可以步入解题了。
首先,函数要求返回vector<string>类型,我们就可以知道,此题肯定用到vector<string>类型已经push_back()函数来进行输入的插入返回。
在这里插入图片描述
在进行操作时,我们也需要进行判断,从按键输入的是否为空,如果是空则直接返回空rstr。在进行插入数据时,利用string类型插入是最为方便的了,所以我们在这里创建了一个string类型的CBS,在利用递归来完成此题。
在这里插入图片描述
首先第一个参数是用于返回结果的参数,第二个是我们按键输入后的数字字符,第三个参数是我们用来计算读到第几个按键,第四个为我们给次读了按键对应的字符后,进行合并并push到vector中
传参时,vector类型需要传引用类型,如果大家在这时还不知道什么为什么传引用,建议大家去我主页查看引用的具体操作。
具体思路大家看下图
链接: 引用

在这里插入图片描述

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

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

相关文章

了解嵌入式系统的不同细分领域:探索嵌入式BSP的定义

嵌入式BSP是指嵌入式系统中的板级支持软件。它是针对特定硬件平台的软件包&#xff0c;提供了操作系统和硬件之间的抽象层&#xff0c;以便开发人员可以更方便地使用硬件功能和编写应用程序。 嵌入式BSP的功能包括&#xff1a; 设备初始化和配置&#xff1a;BSP负责初始化硬件设…

学做测试平台开发-Vuetify 框架

Vuetify 是 Vue 的语义化组件框架&#xff0c;旨在提供整洁、语义化和可重用的组件&#xff0c;使得构建应用程序更方便。 Vuetify 核心是为了提供各种可重复使用的&#xff0c;即插即用并且适合各种项目规格的组件。 Vue 的语义成分。利用 Vue 的功能组件&#xff0c;所有基…

kubectl port-forward 指令

背景&#xff1a; 当K8s的Service类型为ClusterIP&#xff0c;不是NodePort&#xff0c;就只能集群内部访问&#xff0c;想在外部访问可以执行kubectl port-forward&#xff0c;将一个或多个本地端口转发到 Pod或者Service 作用&#xff1a; 做转发&#xff0c;将本地端口转发…

使用 fitter 拟合数据分布

一、简介 前面的文章中通过假设对比来检验样本是否服从泊松分布。得出的结论是总体分布不服从泊松分布&#xff0c;那么如何找到与总体分布最接近的分布呢&#xff1f;不可能一个个分布去验证。这里便可以用到 fitter 这个库。 fitter 是一个小型的第三方库&#xff0c;提供了…

【粉丝投稿】一文带你了解MySQL的左连接与右连接

前言&#xff1a; 昨天粉丝问了一个问题&#xff0c;因此本篇文章主要讲解MySQL的左连接和右连接的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小…

LeetCode——从上到下打印二叉树 II

题目来源 剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣&#xff08;LeetCode&#xff09; 题目 从上到下按层打印二叉树&#xff0c;同一层的节点按从左到右的顺序打印&#xff0c;每一层打印到一行。 示例 给定二叉树&#xff1a;[3,9,20,null,null,15,7] 返回其层…

vuex2实现时间列表选择器

目录 一、效果展示 二、代码分析 2.1、区域确定与坐标获取 2.2、单个点击与一次性点击 一、效果展示 主要借助自定义指令实现。在表格的"td们"上面进行移动框选&#xff0c;有一次性框选和单个框选&#xff0c;去掉自定义指令里的clearTargetNodes()会连续td,连…

Hudi学习5:Hudi的helloworld-编译源码

hudi是使用java代码编写的 部署hudi 1. 下载源码 Download | Apache Hudi https://dlcdn.apache.org/hudi/0.13.1/hudi-0.13.1.src.tgz 2.编译 安装maven 首先要先有JDK java8以上 配置镜像源 执行编译 测试

Yolov5小目标性能提升方案介绍

目录 1.小目标检测介绍 1.1 小目标定义 1.2 难点 2.小目标难点解决方案 2.1注意力提升小目标检测精度 2.1.1 上下文信息CAM 2.1.2 ConvNeXt 2.1.3 ECVBlock 2.1.4 多头上下文集成&#xff08;Context Aggregation&#xff09;的广义构建模块 2.2 多头检测头 2.3 loss优化…

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

Go语言net模块TCP和UDP编程实践

任何一种语言TCP和UDP网络编程总是必须的&#xff0c;接下来就将go语言中使用net标准库进行TCP和UDP编程进行梳理总结。 目录 1.代码结构 2.TCP通信 3.UDP通信 4.TCP模拟HTTP协议通信 5.利用TCP扫描那些端口被占用 1.代码结构 2.TCP通信 server.go package mainimport …

【正点原子STM32连载】 第四十八章 内存管理实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第四…

全志V3S嵌入式驱动开发(spi-nand image制作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 上一篇文章,我们说到了spi-nor image的制作和输入。相比较spi-nor,spi-nand虽然在稳定性上面差一点,但是价格上面有很大的优势。举例来说,一般32M的spi-nor大约在6-7元左右,但…

Springboot链接Redis实现AOP防止重复提交

目录 安装redis Springboot链接Redis 1.创建springboot项目 如果spring boot启动报Error creating bean with name redisUtil/redisTemplate 2.新建application.yml配置 3.redis配置类-直接用 4.redis工具类-直接用 5.写Controller测试 6.启动、测试 整合AOP&#xff…

内网横线移动—WmiSmbCrackMapExecProxyChainsImpacket

内网横线移动—Wmi&Smb&CrackMapExec&ProxyChains&Impacket 1. 前置环境准备2. wmic介绍2.1. wmic操作演示2.1.1. 受控主机上线2.1.1.1. 内网存活探测2.1.1.2. 密码抓取 2.1.2. 横向移动2.1.2.1. 上传文件2.1.2.2. 文件上传目标主机2.1.2.3. 执行木马 2.2. wmi…

JAVA 安全-JWT 安全及预编译 CASE 注入等(40)

在各种语言脚本的环境下&#xff0c;也会产生一些新的漏洞&#xff0c;如果是java又能产生那些漏洞&#xff0c;思维导图里面常规漏洞之前都有&#xff1b; java的访问控制&#xff0c;jwt令牌&#xff08;php几乎没有&#xff09;组件安全&#xff0c;这些都是java特有的 #综…

C#核心知识回顾——3.继承构造、拆装箱、多态

1.继承中的构造函数&#xff1a; 特点&#xff1a; 当申明一个子类对象时 先执行父类的构造函数&#xff0c;再执行子类的构造函数注意&#xff01;&#xff01;&#xff1a; 1.父类的无参构造很重要 2.子类可以通过base关键字代表父类调用父类构造 public class Mot…

【单片机】STM32单片机,定时器的输入捕获,基于捕获的频率计,STM32F103

文章目录 简单介绍外部计数频率计TIM5 频率计 简单介绍 下面的定时器都具有输入捕获能力&#xff1a; 外部计数频率计 查看另一篇文章&#xff1a;https://qq742971636.blog.csdn.net/article/details/131471539 外部计数频率计的缺点&#xff1a;需要两个定时器配合&#x…

控制 显示、隐藏

1、使用 v-if < v-if"isShow"></> data(){ return:{ isShow:false } } if (concepts && concepts.length >0){ this.isShow nv.concepts.includes(snap) } 确认 数组中有某个 字段&#xff0c;用includes 有&…

Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等

前言 之前写过一篇博文《Qt鼠标拖动绘制基本几何图形》 &#xff0c;这是介绍使用QGraphic中利用鼠标事件实现基本几何图形的绘制&#xff0c;支持直线、矩形、圆形、椭圆&#xff0c;本次是在此基础上进行扩展&#xff0c;实现背景图导入&#xff0c;并在图片上进行几何图形绘…