当前位置: 首页 > news >正文

17.电话号码的字母组合(深度递归遍历解决经典老题)

前文

C++深度递归遍历解决"电话号码的字母组合问题",本题考察的比较全面,考察到vector的使用,深度遍历以及递归的熟练度,希望能对铁子们有所帮助

一,题目

链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number/

二,解法

如上图所示,以"256"为例,我们将三个字符串各个字符的排列组合展开,我们发现这个结构类似于多叉树的结构,主要是考察深度遍历,因此我们也可以用递归来完成。

既然已经确定可以用递归来完成,那么我们就需要确定递归所需参数。

首先我们需要创建一个vector<string> ret用来存储需要返回的字母组合,同时需要创建size_t depth控制递归的深度,再创建一个string combinestr用来存储每组的字母组合,当然digits也是必须要传的。

所需参数已确定,那么具体的递归过程呢。

我们以上图"ajm" "ajn" "ajo"为例子,具体讲解一下递归的过程

三,代码

代码实现:

class Solution {//获取每个数字对应字符串//由于0 1没字符,所以设置成空串string get_numberstr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:void Combination(const string& digits,size_t depth,string combinestr,    vector<string>& ret){    //depth控制深度,digits的长度就是我们递归的深度if(depth==digits.size()){ret.push_back(combinestr);return;}int digit=digits[depth]-'0';//获取数字字符string numberstr=get_numberstr[digit];//获取数字所对应的字符串for(auto ch:numberstr){Combination(digits,depth+1,combinestr+ch,ret);}}vector<string> letterCombinations(string digits) {vector<string> ret;if(digits.size()==0){return ret;}size_t depth=0;//控制递归深度string combinestr;//存储每组字符串Combination(digits,depth,combinestr,ret);return ret;}
};
成功实现
http://www.lryc.cn/news/39653.html

相关文章:

  • Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符
  • 【RPC】Apache Thrift系列详解 - 概述与入门
  • class03:MVVM模型与响应式原理
  • [Spring学习]08 @Resource和@Autowired注解的区别
  • 前端开发神器VS Code安装教程
  • 【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
  • 搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置
  • Node.js-----使用express写接口
  • 【Linux修炼】16.共享内存
  • JAVA进阶 —— Stream流
  • Linux基础命令大全(上)
  • 嵌入式 串口通信
  • C语言函数调用栈
  • 【高阶数据结构】红黑树
  • 网络协议分析期末复习(二)
  • 【C++】STL简介 及 string的使用
  • MySQL事务详解
  • ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨
  • iOS-砸壳篇(两种砸壳方式)
  • linux 基础
  • Java:SpringBoot给Controller添加统一路由前缀
  • Java 基于 JAVE 库 实现 视频转音频的批量转换
  • Spring容器——基于XML注入
  • 设计模式(二十一)----行为型模式之状态模式
  • 一分钟理解 AP(Affinity Propagation) 亲和⼒传播算法
  • 使用mybatis的映射文件操作存储过程
  • 世界上最完美的两个软件,太厉害了!
  • 教你成为比卡卡西还牛逼的全能忍者,全拷贝与分割函数
  • 【LeetCode】剑指 Offer(24)
  • javaEE 初阶 — CSS 元素的显示模式与盒模型