在做题中学习(31):电话号码的字母组合(全排列)

news/2024/12/29 11:35:58/

17. 电话号码的字母组合 - 力扣(LeetCode)

思路:既然要排列组合,就得先根据数字字符取出来

所以先定义一个string类的数组通过下标取到每个数字对应的映射。

string _numsTostr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};

接下来便是:想到如果可以用递归,把每次组合的值返回(追加)到一个vector<string>对象中,且能回到上一个位置继续,就能将全排列搞定。

因为通过di下标访问数组,所以当di==digits.size()时,得到字符串,尾插到v中,返回上一级。

可以通过for循环访问每一个数字映射的全部字符。

class Solution 
{
public:string _numsTostr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};void Combine(const string& digits,int di,string cbstr,vector<string>& v){if(di==digits.size()){v.push_back(cbstr);return;}int num = digits[di]-'0';string str = _numsTostr[num];for(int i=0;i<str.size();i++){Combine(digits,di+1,cbstr+str[i],v);}}vector<string> letterCombinations(string digits) {vector<string> v;if(digits.empty()){return v;}Combine(digits,0,"",v);return v;}
};

注意:1.main函数加个if是因为防止用户输入为空,进到Combine里还会通过if尾插。

           2.其中的参数cbstr是保存每一次最后的字符串,把他尾插到v里,而递归往下走时的每一层字符由str加到cbstr里。

           3.这里传的参数v,加了引用,目的是直接加到外面要返回的v里。


附上一部分自己画的递归展开图,方便理解。


http://www.ppmy.cn/news/1266072.html

相关文章

[Linux] nginx的location和rewrite

一、Nginx常用的正则表达式 符号作用^匹配输入字符串的起始位置$ 匹配输入字符串的结束位置*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”&#xff0c;但不能匹配“o”?匹配前面的字…

WhatsApp获客怎么做?记住这几个技巧!

一、背景介绍 随着全球数字化趋势的不断发展&#xff0c;越来越多的企业开始将目光转向数字化营销&#xff0c;WhatsApp作为一种国际通用的社交媒体平台&#xff0c;具有广泛的使用群体和强大的社交功能&#xff0c;成为了很多企业进行营销推广的重要渠道。 那么&#xff0c;…

Leetcode 2962. Count Subarrays Where Max Element Appears at Least K Times

Leetcode 2962. Count Subarrays Where Max Element Appears at Least K Times 1. 解题思路2. 代码实现 题目链接&#xff1a;2962. Count Subarrays Where Max Element Appears at Least K Times 1. 解题思路 这一题思路上同样很直接&#xff0c;就是找到最大的元素所在的全…

API接口使用方法(封装好的电商平台)

为了进行此平台API的调用&#xff0c;首先我们需要做下面几件事情。 1、 获取一个KEY。 点击获取 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口&#xff0c;响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心和API测试工具&#xff0c…

每日一题,头歌平台c语言题目

任务描述 题目描述:输入一个字符串&#xff0c;输出反序后的字符串。 相关知识&#xff08;略&#xff09; 编程要求 请仔细阅读右侧代码&#xff0c;结合相关知识&#xff0c;在Begin-End区域内进行代码补充。 输入 一行字符 输出 逆序后的字符串 测试说明 样例输入&…

【K8s】Kubernetes CRD 介绍(控制器)

文章目录 CRD 概述1. 操作CRD1.1 创建 CRD1.2 操作 CRD 2. 其他笔记2.1 Kubectl 发现机制2.2 校验 CR2.3 简称和属性 3. 架构设计3.1 控制器概览 参考 CRD 概述 CR&#xff08;Custom Resource&#xff09;其实就是在 Kubernetes 中定义一个自己的资源类型&#xff0c;是一个具…

elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 调换 “确认“、“取消“ 按钮的位置

文章目录 前言具体操作总结 前言 elementUI中的 "this.$confirm" 基本用法&#xff0c;"this.$confirm" 调换 "确认"、"取消" 按钮的位置 具体操作 基本用法 <script> this.$confirm(这是数据&#xff08;res.data&#xff0…

关于个人职业选择

职业选择&#xff0c;一直是个老生常谈的话题。这并不是一个容易做的决定。 让我们来看看AI怎么说。 首先是方向性的回答&#xff1a; 然后是一些具体的回答 我个人比较倾向于深耕网络安全。这是一个很有趣也是一个持续发展着的领域。 不知道关于这个事情你怎么看&#xff0…