题目:来源于leetcode

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

代码:

class Solution {public:vector<string> letterCombinations(string digits) {vector<string> Comletters;if(digits.empty()){return Comletters;}unordered_map<char,string> numberMap{{'2',"abc"},{'3',"def"},{'4',"ghi"},{'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};string comletter;//采取递归地方式来解决所有组合问题backtrack(Comletters,numberMap,digits,0,comletter);return Comletters;}void backtrack(vector<string>&Comletters,const unordered_map<char,string>& numberMap,const string& digits, int index, string& comletter){if(index==digits.length()){Comletters.push_back(comletter);}//有两个vector,这个是外面的,到最后完成了所有的内层,再一个个存入最后的vectorelse{char digit = digits[index];const string& letters = numberMap.at(digit);// letters是数字对应的所有字母组成的字符串常量for(const char& letter: letters){comletter.push_back(letter);//这个是里面的vector,以23为例,首先应该是a,然后去迭代3对应的所有字母backtrack(Comletters,numberMap,digits,index+1,comletter);comletter.pop_back();//以23为例,一开始是a,然后是ad,pop出d变为a,在循环一下变为ae,pop出e变为a,最后是af}}}
};

总结:

学会了unorder_map;递归嵌套有所熟悉、pop_back;发现在c++中注释写多了也会占用执行时间,有点无语。。。

十七、电话号码的字母组合相关推荐

  1. 《LeetCode力扣练习》第17题 电话号码的字母组合 Java

    <LeetCode力扣练习>第17题 电话号码的字母组合 Java 一.资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数 ...

  2. LeetCode 17电话号码的字母组合(搜索)18四数之和

    电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...

  3. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]

    [问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...

  4. 【LeetCode】【HOT】17. 电话号码的字母组合(递归)

    [LeetCode][HOT]17. 电话号码的字母组合 文章目录 [LeetCode][HOT]17. 电话号码的字母组合 package hot;import java.util.ArrayLis ...

  5. [DFS|回溯法] leetcode 17 电话号码的字母组合

    [DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...

  6. 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)

    目录 LeetCode216. 组合总和III 1. 思路 2. 代码实现 3. 剪枝 4. 复杂度分析 5. 思考与收获 LeetCode17. 电话号码的字母组合 1. 思路 2. 代码实现 3. ...

  7. leetcode17 电话号码的字母组合,39 组合总和(python)

    文章目录 17. 电话号码的字母组合 分析 代码 通过截图 39. 组合总和 分析 代码 通过截图 代码 通过截图 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 ...

  8. Leetcode 电话号码的字母组合

    电话号码的字母组合 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母 题目链接 class Solut ...

  9. day21|216.组合总和III、17.电话号码的字母组合

    216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回所有可能的有效组合的列表 .该列表不能包含相同的组合两次,组合可以以 ...

  10. Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合

    组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...

最新文章

  1. 【学习笔记】超简单的多项式求逆(含全套证明)
  2. STL,ATL,WTL之间的联系和区别
  3. 互联网1分钟 | 1017
  4. php对应哪个oracle版本,Oracle 版本说明
  5. Error:The supplied javaHome seems to be invalid. I cannot find the java executable
  6. synchronized 加锁 this 和 class 的区别!
  7. android 日期时间类,Android 日期时间等转换工具类
  8. MAVEN 的常用命令
  9. 说说你对Jdk并发包中的CAS实现的了解?
  10. 2022跨年烟花代码(五)HTML5全屏烟花特效
  11. SIFT算法学习总结
  12. 计算机故障排除原则和方法
  13. creo扫描选择多条链作为轨迹_Creo与Proe可变截面扫描关系式雨伞建模实例-一加一学院...
  14. Serializable serialVersionUID作用
  15. php jquery制作抖音,抖音制作优质脚本的方法在这里
  16. MySQL–ROW_NUMBER
  17. k8s 1.23.1部署gitlab、 gitlab-runn配置k8s集群编写.gitlab-ci.yml实现根据tag,分支发布CICD流程
  18. adb remount 报错:Binder ioctl to enable oneway spam detection failed: Invalid argument
  19. 简答实现登录注册(需要导入JQ库)
  20. Maven 错误找不到符号

热门文章

  1. K210模块使用简介+Win10下本地训练模型
  2. Sin City --《罪恶之城》
  3. foxmail登入密码忘记怎么办?
  4. JS逆向寻找生成bid变量的加密算法,一顿操作猛如虎,结果发现原来是混淆代码
  5. java switch case 跳转_java 在switch结构中的case1如何跳转到case2
  6. 乔布斯那些经典的激励我们的语录
  7. 云通讯这局棋,声网、容联云怎么破?
  8. 腾讯又一长达 8 年的服务下架。。。
  9. 给服务器下载补丁及安装补丁
  10. C语言再学习25——常用字符串函数归纳