C++-17. 电话号码的字母组合

news2024/11/25 2:40:40

题目来源:力扣

题目描述:

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

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

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:

输入:digits = ""
输出:[]
示例 3:

输入:digits = "2"
输出:["a","b","c"]

代码:

class Solution {
    string strA[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:
    void Combine(string digits,int level,string combinestr,vector<string>& v){
        //子函数
        //level:层数 combinestr:上一层加下来的字符串 
        if(level==digits.size()){
            v.push_back(combinestr);
            return;
        }
        int num = digits[level] - '0';//得到当前对应的数字
        string str = strA[num];//得到数字对应的几个字符
        for(int i=0;i<str.size();i++){//使用str.size对应字符串的种类
            Combine(digits,level+1,combinestr+str[i],v);
        }
    }
    vector<string> letterCombinations(string digits) {
        vector<string> v;
        if(digits.empty()){
            return v;
        }
        Combine(digits,0,"",v);
        return v;
    }
};

 思路:

我们假设输入的数字为258,那2对应的为abc,5对应的为jkl,8对应的为tuv,我们需要组合出ajt,aju,ajv,akt,aku,akv,alt,alu,alv等等,思路为递归

我们记录输入数字的个数,然后转换为层数,这里有三个数,我们的层数最多就是3,到达3后返回到上一层,比如我们从a开始,为ajt,然后返回,再从aj开始,变为aju, 以此类推

for循环里用str.size来做为终止条件,str.size对应的是数字对应字符串的长度,比如数字2对应的字符串是abc,有三个字符,那么此时的str.size就是3

我们使用strA记录数字对应的字母,前两个设为空,这样我们可以轻松对应下标

本题理解比较困难,推荐大家画一下递归展开图

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

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

相关文章

【MySQL】数据不存在则插入

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…

全面认识二极管,一篇文章就够了

电子设计基础元器件 二极管&#xff0c;小小二极管&#xff0c;大大用途。 ... 矜辰所致目录 前言一、二极管基础知识1.1 什么是二极管1.2 二极管的组成1.3 二极管的原理 二、二极管特性2.1 伏安特性曲线图2.2 温度的影响2.3 关于击穿 三、 二极管的参数正向连续电流和平均整…

银行金融风险管理面试问题汇总(附答案)

最近有些学员在咨询换工作的事&#xff0c;包括一些金融上市公司的高管。我收集了一些金融风险管理面试问题相关资料&#xff0c;希望能帮助大家。记得收藏此文章&#xff0c;以防之后找不到文章。 风险经理识别和分析潜在的公司风险&#xff0c;并找到减少或避免风险的方法。…

pve (群辉、软路由、win/linux)折腾日记

目录 生命不息&#xff0c;折腾不止名词解释硬件参数装机PVE安装下载pveultraISO 把镜像写入u盘rufus把镜像写入U盘bios设置U盘启动安装pve系统 ssh连接pvepve的使用安装pvetools安装ubuntu-server系统ubuntu更换国内源ubuntu安装docker更改docker国内源docker环境下安装青龙 安…

了解 MySQL 的存储引擎

点击上方↑“追梦 Java”关注&#xff0c;一起追梦&#xff01; 存储引擎的主要工作就是与文件系统进行数据交互&#xff0c;比如我们常用的 InnoDB 引擎。 MySQL 的存储引擎是插件式的&#xff0c;应用程序无需针对不同的存储引擎进行对应的编码操作&#xff0c;MySQL 提供了一…

什么是布道师?看完这篇文章你就懂了

布道师这个术语可能对许多人来说还比较陌生&#xff0c;但实际上&#xff0c;布道师在软件行业中扮演着非常重要的角色。他们是软件产品的积极倡导者和用户之间的桥梁&#xff0c;致力于传递好消息、收集反馈&#xff0c;并与用户建立良好的关系。在本文中&#xff0c;我们将深…

Linux —— 查看进程命令及进程优先级

目录 一&#xff0c;查看进程命令 1&#xff0c;ps 命令 ps axj ps aux ps l ps -l 2&#xff0c;top 命令 3&#xff0c;ptree 命令 4&#xff0c;pgrep 命令 三&#xff0c;进程优先级 PRI NI 一&#xff0c;查看进程命令 ps、top、pstree、grep&#xff1b; 1&…

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践

一、 相关活动介绍&#xff1a; 自从上次参加完CSDN联合腾讯云发起的《云原生之降本增效》活动后&#xff0c;只是停留聚焦在优秀实践方法论、资源与弹性、架构设计上的了解&#xff0c;本次《腾讯云 Finops Crane 开发者集训营》是深入了解并实践基于 FinOps 框架开展的一个成…

001-Spring简要原理分析

Bean的生产 class到beanDefinition beanDefinition到Bean Bean查找流程 根据类型找找到多个根据名称找 AOP 在实例化后创建代理对象返回 把之前创建的Bean塞入代理对象的 target 字段中 事务 利用AOP代理掉数据源 在提交事务的时候 关闭自动提交手动提交事务异常回滚事…

【力扣算法16】之 18. 四数之和 python

文章目录 问题描述示例1示例2提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[…

MySQL Schema 比较同步工具汇总(2023 版)

数据库 schema 比较工具使你能够识别关系数据库中对象结构的差异&#xff0c;并在多个数据库中同步你的特定对象。它通常用于以下情况&#xff1a; 将数据库变更从私有分支合并到团队的主分支在同构数据库中保持 schema 一致性构建新的数据库测试环境根据应用需求将数据库 sch…

与国外客户会面后,一些用语整理

与客户进行了会面&#xff0c;当客户离开工厂&#xff0c;我们需要对讨论过的内容进行整理并发邮件给客户&#xff0c;这里会用到一些客套语&#xff0c;今天分享部分给大家参考&#xff01; Well received and thank you for the update, will be sure to take note on those…

利用 DNSLog无回显注入

DNSLog概念 DNSLog&#xff08;域名系统日志&#xff09;是一种特殊的技术和服务&#xff0c;用于捕获和记录通过域名系统&#xff08;DNS&#xff09;协议进行的请求和响应。它的目的是帮助用户跟踪、分析和管理DNS流量&#xff0c;并收集与域名相关的信息。 基本上&#xf…

JDBC 异常处理(SQLException)

异常处理允许您以受控的方式处理异常情况&#xff0c;例如程序定义的错误。 发生异常情况时&#xff0c;将引发异常。抛出这个词意味着当前程序停止执行&#xff0c;并且控件被重定向到最接近的适用catch子句。如果不存在适用的catch子句&#xff0c;则程序的执行结束。 JDBC…

提升内功之模拟实现库函数strlen/strncpy/strcmp/strcat/strstr/memcpy/memmove

strlenstrncpystrcmpstrcatstrstrmemcpymemmove strlen strlen函数的作用就是求字符串的首元素开始往后计算字符串的长度&#xff0c;直到’\0‘&#xff0c;但不会把\0的长度计算进去 #include<stdio.h>size_t Strlen(const char* src) {size_t count 0;while (*src ! …

SpringBoot 集成 EasyExcel 3.x导入导出

SpringBoot 集成 EasyExcel 3.x导入导出 介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyex…

IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台

IDEA Spring Boot Security MyBatis PlusMysql低代码快速开发平台 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.主页3.用户管理4.角色管理5. 权限管理6. 部门管理7. 数据字典8.文件管理9.系统配置10.电子邮件11.站内消息12.数据监控13.定时任务14.在线用户15.任务日…

芯片验证板卡设计方案:基于VU440T的多核处理器多输入芯片验证板卡

基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证&#xff0c;包括四个FMC接口、DDR、GPIO等&#xff0c;板卡用于完成甲方的芯片验证任务&#xff0c;多任务功能验证。 …

图书管理系统【C语言】

咱就是说这太令人绝望了&#xff01; &#xff01;&#xff01; 图书管理系统 这是一个平平无奇的系统。 一、系统要求 1、实现以下基本功能 1.添加图书 2.删除图书 3.保存图书 4.图书列表 5.修改图书 6.查找图书 7.图书排序 …

网络安全运维工程师的主要职责

什么是安全运维工程师呢&#xff1f;安全运维工程师就是网络安全大方向下的网络安全运行与维护的一个细分岗。 IT运维工作方向比较多&#xff0c;列如安全运维、数据运维、应用运维、系统运维等&#xff0c;今天我们就来了解一下网络完全运维工程师是什么&#xff1f;同时也了…