【leetcode C++】电话号码的字母组合

news2024/10/6 10:32:17

17. 电话号码的字母组合

题目

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

 

 

题目链接 

. - 力扣(LeetCode)

文字 和 画图 分析

这道题明显是需要互相匹配,如 字符串 “23”, 对应 “abc” 和 “def”。

这个时候我们就想到跟循环有关,但是我们很难控制出 for循环的个数 ,所以最好的办法就是采用递归

参数我们需要:digits (含 2-9 的字符串),di(表示层数) ,

tmp (每一层对应的字符串),t (接收每一次递归结束时的字符串)

注意事项:

  1. tmp 不要传引用 ,便于递归结束时可以对应到上一层的字符串
  2. t 需要传引用 ,我们需要每一次递归结束都保留相应的字符串
  3. 递归尽量参数不要使用 +=,否则递归结束,回到上一层,参数存储的值不会变

举例(digits = "23"):

递归顺序:

代码 

class Solution 
{
private:
string letter[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:
    void _letterCombinations(string& digits,string tmp,int di,vector<string>& t)
    {
        if(di == digits.size())
        {
            t.push_back(tmp);
            return;
        }
        int n = digits[di] - '0';
        string s = letter[n];
        for(auto i : s)
        {
            _letterCombinations(digits,tmp + i,di + 1,t);
        }
    }
    vector<string> letterCombinations(string digits) 
    {
        vector<string> t;
        if(digits.size() == 0)
        {
            return t;
        }
        _letterCombinations(digits,"",0, t);
        return t;
    }
};

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

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

相关文章

Linux学习-函数指针和指针函数

目录 字符串是char *型&#xff0c;代表的是字符串的第一个元素的地址 指针函数&#xff1a; 函数指针&#xff1a; 字符串是char *型&#xff0c;代表的是字符串的第一个元素的地址 指针函数&#xff1a; int *Fun(int a, int b); 是函数&#xff0c;函数的返回值类型是…

PaddleSeg分割框架解读[01] readme解读

简介 PaddleSeg是基于飞桨PaddlePaddle的端到端图像分割套件,内置45+模型算法及140+预训练模型,支持配置化驱动和API调用开发方式,打通数据标注、模型开发、训练、压缩、部署的全流程,提供语义分割、交互式分割、Matting、全景分割四大分割能力,助力算法在医疗、工业、遥…

docker容器内修改容器时间

因为开发需要&#xff0c;需要临时修改容器内时间测试&#xff0c;且不影响宿主机的原始时间。调研了下相关方法&#xff0c;现做记录如下. LIBFAKETIME ​ libfaketime 可以安装在linux和macOS系统。它使用操作系统的预加载library机制&#xff0c;因此对于静态链接或setuid程…

前端面试拼图-原理源码

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录下... 1. JS内存泄漏如何检测&#xff1f;场景有哪些? 1.1 垃圾回收 GC 垃圾回收是一种自动管理内存的机制&#xff0c;它负责在运行时跟踪内存的分配和使用情况&#xff0c;并在不再需要的对象…

本机虚拟机centos7设置固定ip

一、配置虚拟机网络 1、点击编辑 2、点击更改设置 记住子网地址&#xff1a;192.168.121.0 点击确定 二、配置虚拟机网络配置文件 首先进去root中&#xff0c;然后进入vim编辑器中 (1)su - root (2) vim /etc/sysconfig/network-scripts/ifcfg-ens33 在VIM编辑器中修改并添加…

云计算的部署方式(公有云、私有云、混合云、社区云)

云计算的部署方式(公有云、私有云、混合云、社区云) 目录 零、00时光宝盒 一、云计算的部署方式 1.1、公有云&#xff08;Public Cloud&#xff09; 1.2、私有云&#xff08;Private Cloud&#xff09;  1.3、混合云&#xff08;Hybrid Cloud&#xff09; 1.4、社区云&am…

解决DBeaver执行脚本报错No active connection

解决DBeaver执行脚本报错No active connection 1、报错问腿 2、问题解决 2.1、右键点击该数据库&#xff0c;选择SQL编辑器&#xff0c;选择新建SQL编辑器&#xff0c;然后将sql语句复制过去。 或者左击选中数据库后直接使用快捷键 Ctrl] 2.2、在Project-General中找到Scr…

Linux-网络-011

1网络协议模型 1.1【OSI】协议模型 1.1.1应用层 实际发送的数据应用层:HTTP 超文本传输协议HTTPS FTP 文件传输协议TFTP 简单文本传输协议SMTP 邮件传输协议MQTT TELNET ..1.1.2表示层 发送的数据是否加密1.1.3会话层 是否建立会话连接1.1.4传输层 数据…

MM配置2-给公司代码分配工厂

配置步骤&#xff0c;如下图&#xff1a;在弹出的对话框中将工厂分配给相应的公司代码 保存完成

LVS四层负载均衡集群

简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案&#xff0c;终端互联网用户从外部访…

什么是测试架构?

什么是测试架构? 测试架构对软件测试有什么帮助?软件公司需要设置“软件测试架构师”职位吗?软件测试架构师做哪些事情? 我们都知道系统各个组件如何集成在一起、如何相互协调工作&#xff0c;而这些都需要“软件架构师”来完成&#xff0c;但对测试团队为何要设立“架构…

算法竞赛基础:树状数组

算法竞赛基础&#xff1a;树状数组 是什么&#xff1f; 树状数组虽然语义上是树状&#xff0c;但是实际上还是一个数组。 树状数组的功能就是单点和区间的修改和查询。 例如&#xff0c;如果想增加一个点的值&#xff0c;那么你需要让其上方所有能对齐的树状数组c全部增加相同…

day36 贪心算法part5

435. 无重叠区间 中等 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 气球问题稍加改动就可ac 一个交叉区间里&#xff0c;最终只能保留一个&#xff0c;其他的全部要去掉。…

android开发的基础,大厂程序员35岁后的职业出路在哪

为什么越来越多的年轻人感觉工作没有动力、职业发展没有希望&#xff0c;迷茫和中年危机等现象普遍发生&#xff1f; 人常说&#xff0c;安居才能乐业。 前些年&#xff0c;房价虽然也不低&#xff0c;但刚工作的年轻人&#xff0c;努力奋斗&#xff0c;攒上几年钱&#xff0c…

蓝桥杯练习系统(算法训练)ALGO-985 幸运的店家

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 炫炫开了一家商店&#xff0c;卖的货只有一个&#xff0c;XXX&#xff0c;XXX卖N元钱。有趣的是&#xff0c;世界上只有面值…

LeetCode刷题---填充每个节点的下一个右侧节点指针

官方题解:LeetCode官方题解 解题思想: 因为是一棵满二叉树&#xff0c;所以除了叶子节点外的其他节点都有两个子节点。 可以根据每一层来依次遍历 从根节点开始&#xff0c;根节点的左子节点的next节点就指向根节点的右子节点 因为根节点的next节点为NULL&#xff0c;开始从根…

扫地机器人

题目描述 小明公司的办公区有一条长长的走廊&#xff0c;由N个方格区域组成&#xff0c;如下图所示。 R r 走廊内部署了K台扫地机器人&#xff0c;其中第台在第A&#xff0c;个方格区域中。已知扫地机器人每分钟可以移动到左右相邻的方格中&#xff0c;并将该区域清扫干净。 请…

softmax和sigmoid的区别

sigmoid 公式&#xff1a; s i g m o i d ( x ) 1 1 e − x sigmoid(x) \frac{1}{1 e^{-x}} sigmoid(x)1e−x1​ 函数曲线如下&#xff1a; 导数公式&#xff1a; f ( x ) ′ e − x ( 1 e − x ) 2 f ( x ) ( 1 − f ( x ) ) f(x)\prime \frac{ e^{-x}}{(1 e^{-x})…

Day14:单元测试、Junit单元测试框架、反射、注解

单元测试 针对最小的功能单元&#xff08;方法&#xff09;进行正确性测试编写正规的单元测试框架传统的无法执行自动化测试&#xff0c;且无法得到测试报告 Junit单元测试框架 Junit的作用&#xff1a; 具体步骤 测试类取名&#xff1a;原类名Test&#xff08;大驼峰&#…

30m二级分类土地利用数据Arcgis预处理及获取

本篇以武汉市为例&#xff0c;主要介绍将土地利用数据转换成武汉市内各区土地利用详情的过程以及分区统计每个区内各地类面积情况&#xff0c;后面还有制作过程中遇到的面积制表后数据过小的解决方法以及一些相关的知识点&#xff1a; 示例数据下载链接&#xff1a;数据下载链…