LeetCode 17.电话号码的字母组合 C++写法

news2025/1/12 6:16:06

LeetCode 17.电话号码的字母组合 C++写法

image-20240730124224233

思路🧐:

   使用深度优先搜索+递归进行解题。首先建立一个号码与字母的映射表,当接收传过来的号码字符串时减去字符0就可以拿到该号码。其次使用string存储当前号码所对应字母,然后for循环遍历字母并进行递归拼接,递归结束条件为当遍历完最后一个号码时,对存储字母组合的vector进行尾插取到该轮递归的字母组合。当该轮递归结束后,第一个号码的下一个字母开始递归,此时i和combination都已经重新变为第一次调用时的数据,依照该顺序又开始新一轮递归,直到组合完所有字母。image-20240730132733409

代码🔎:

class Solution {
public:
    const char* LetterArr[10]= {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    void Combination(string digits,size_t i,string combination, vector<string>& str)
    {
        if(i == digits.size()) //当遍历完最后一个号码对应字母就尾插拼接
        {
            str.push_back(combination);
            return;
        }
        int num = digits[i] - '0'; //取号码
        string ch = LetterArr[num]; //取号码所对应字母
        for(auto s : ch)
        {
            Combination(digits,i + 1,combination + s,str); //开始递归,i为号码下标,combination+s为拼接的字母
        }
    }
    vector<string> letterCombinations(string digits) {
        vector<string> str; //存储字母组合
        if(digits.empty()) //为空直接返回
            return str;
        string combination; //存储拼接的字母
        Combination(digits,0,combination,str);
        return str;
    }
};

image-20240730132921012

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

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

相关文章

用Java手写jvm之尝试解析clazz文件内容

写在前面 源码 。 本文尝试来解析下class文件的内容&#xff0c;了解了class文件内容后&#xff0c;对我们提升java认知将会带来很大的帮助&#xff0c;有多大呢&#xff0c;不好说&#xff0c;总之很大很大&#xff0c;大到受不了&#x1f60d;&#x1f60d;&#x1f60d;。 …

安泰高压放大器在工业领域中的应用

高压放大器是一种在工业领域中发挥重要作用的电子设备&#xff0c;其功能是将低电压信号放大到更高的电压水平。这种设备在多个工业应用中都发挥着关键作用&#xff0c;提供了稳定、可调节的高电压输出。以下是高压放大器在工业领域中的主要应用&#xff1a; 1.精密仪器和实验室…

尚硅谷电商实时数仓笔记-《二》数仓建模概述

上一篇&#xff1a; 尚硅谷电商实时数仓笔记-《一》数仓概述-CSDN博客 二、数仓建模概述 2.1 数据仓库建模的意义 如果把数据看作图书馆里的书&#xff0c;我们希望看到它们在书架上分门别类地放置&#xff1b; 如果把数据看作城市的建筑&#xff0c;我们希望城市规划布局合理…

面试官没想到一个ArrayList,我都能跟他扯半小时

点赞再看&#xff0c;Java进阶一大半 南哥在stackoverflow社区看到14年前的这么一个问题&#xff1a;Java 的 Vector.add() 和 Vector.addElement() 有什么区别&#xff0c;大家有答案吗&#xff1f; 它们实际上没有区别&#xff01;&#xff01;&#xff01;1996年的JDK 1.0版…

每日一题,力扣leetcode Hot100之56. 合并区间

解题思路&#xff1a; 先按照每个数组的第一个数字sort排序。 每次进来一个数组&#xff0c;如果你的第1项大于别人的第2项&#xff0c;那么直接添加。 否则的话则存在可以合并的区间&#xff0c;然后合并的区间的第2项则为旧的和新的第2项的最大值。 class Solution:def m…

SpringBoot框架简单整合ShardingSphere-JDBC实现MySQL分库分表和读写分离及加密混合

1. 主从配置 1.1 主机1&#xff08;IP:192.168.186.77&#xff09; 1.1.1 docker-compose.yml version: 3.8services:mysql-master:image: mysql:latestcontainer_name: mysql-masterenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_USER: masterMYSQL_PASSWORD: 123456MYSQL…

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目&#xff1a;** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义&#xff1a;** 随着旅游业的快速发展&#xff0c;人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能&#xff0c;但在…

短视频矩阵管理系统开发

在短视频内容爆炸式增长的今天&#xff0c;如何高效管理多个账号&#xff0c;同时保持内容的创新性和互动性&#xff0c;成为了创作者和品牌面临的重大挑战。短视频矩阵管理系统的开发&#xff0c;正是为了解决这一问题&#xff0c;提供一个全面的解决方案。 多账号管理&#…

本地调试指引文档

在开发组件库时&#xff0c;我们经常需要在真实的项目中测试组件库的功能&#xff0c;所以需要进行本地调试&#xff0c;本文介绍两种组件库本地调试流程&#xff0c; 1.使用beta版本 2.使用npm link 两种都可以作为本地调试的方案&#xff0c;本文作为一个参考资料&#xff0…

【机器学习】机器学习的分类算法以及使用逻辑回归算法进行分类

引言 机器学习中的分类算法是一种监督学习算法&#xff0c;其目的是根据已知的输入和输出&#xff08;即特征和标签&#xff09;来训练模型&#xff0c;以便能够预测未标记数据的类别标签 文章目录 引言一、分类算法1.1 逻辑回归&#xff08;Logistic Regression&#xff09;1.…

新手小白,开放式耳机该如何挑选?自费无广开放式耳机评测

作为一个在耳机领域探索多年的人&#xff0c;看到这个问题&#xff0c;我觉得有必要分享一些实用的经验和见解&#xff0c;希望能帮助到各位新手朋友。 首先要来说的就是在挑选开放式耳机的时候需要注意的几个点: 一、佩戴的稳固性。开放式耳机的设计较为独特&#xff0c;如果…

详细指南丨Apache环境下如何配置HTTPS证书

在Apache环境下部署SSL证书通常涉及几个步骤&#xff0c;包括生成私钥、创建CSR&#xff08;证书签名请求&#xff09;、安装SSL证书以及配置Apache服务器。下面是详细的步骤说明&#xff1a; 1. 准备工作 确认服务器和域名&#xff1a;需要有一台已经设置好的Apache服务器和…

后台管理系统(springboot+vue3+mysql)

系列文章目录 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. List&#xff1c;HashMap&#xff1c;String,String&#xff1e;&#xff1e;实现自定义字符串排序&#xff08;key排序、Val…

规划决策算法(四)---Frenet坐标系

知乎&#xff1a;坐标系转换 1.Frenet 坐标系 什么是 Frenet 坐标系&#xff1a; 为什么使用 Frenet 坐标系&#xff1a; 通常情况&#xff0c;我们只会关注车辆当前距离左右车道线的距离&#xff0c;来判断是否偏离车道&#xff0c;是否需要打方向盘进行方向微调。而不是基于…

学习测试15-实战6-根据说明书建工程

CAN协议说明书&#xff1a;含义 一&#xff0c;得到表 1&#xff0c;先建信号 2&#xff0c;建报文&#xff0c;将对应信号拖入其中 3&#xff0c;建节点&#xff0c;将报文添加进TX msg里 调整起始位 数据库建立完成 二&#xff0c;不需要面板&#xff0c;直接导入数据库&…

OpenCV图像滤波(4)构建图像金字塔函数buildPyramid()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在计算机视觉和图像处理中&#xff0c;构建图像金字塔&#xff08;Image Pyramid&#xff09;是一种常用的技术&#xff0c;它生成一系列分辨率逐…

怎么保护电脑文件夹?文件夹保护方法大盘点

文件夹是管理电脑数据的重要工具&#xff0c;可以有效避免数据混乱。而为了避免文件夹数据泄露&#xff0c;我们需要严格保护文件夹。下面我们就来盘点一下文件夹的保护方法。 文件夹隐藏 隐藏文件夹是一种简单有效的保护方式&#xff0c;通过隐藏文件夹来避免其他人发现&…

【算法】道格拉斯

一、引言 道格拉斯算法是一种用于曲线拟合的数学方法&#xff0c;特别是在处理曲线插值问题时非常有用。道格拉斯-普克算法&#xff08;Douglas-Peucker Algorithm&#xff09;&#xff0c;简称D-P算法&#xff0c;是一种用于简化多边形或折线的高效算法&#xff0c;由David Do…

如何优化PyTorch以加快模型训练速度?

PyTorch是当今生产环境中最流行的深度学习框架之一。随着模型变得日益复杂、数据集日益庞大&#xff0c;优化模型训练性能对于缩短训练时间和提高生产力变得至关重要。 本文将分享几个最新的性能调优技巧&#xff0c;以加速跨领域的机器学习模型的训练。这些技巧对任何想要使用…

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…