题目

解法 BFS + hash

/*
广度遍历,利用队列实现
*/
class Solution {private:unordered_map<char,string> tel_map;queue <string> re_queue;vector<string> result;
public:Solution(){tel_map = {{'2',"abc"},{'3',"def"},{'4',"ghi"},{'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};}vector<string> letterCombinations(string digits) {if(digits.length() ==  0)return result;auto p = tel_map.find(digits[0]);string tmp1 = p->second;for(int i = 0 ; i < tmp1.length();i++){string tmp2;tmp2.push_back(tmp1[i]);re_queue.push(tmp2);}for(int i = 1 ; i < digits.length();i++){unordered_map<char,string>::iterator p = tel_map.find(digits[i]);string tmp3 = p->second;vector <string> tmp4;while(!re_queue.empty()){string tmp5 = re_queue.front();re_queue.pop();for(int j = 0 ; j < tmp3.length();j++){string tmp6 = tmp5 + tmp3[j];tmp4.push_back(tmp6);}}for(int k = 0; k < tmp4.size();k++){re_queue.push(tmp4[k]);}}while(!re_queue.empty()){result.push_back(re_queue.front());re_queue.pop();}return result;}
};

时间复杂度为 O ( 3 N ∗ 4 M ) O(3^N * 4^M) O(3N∗4M) N + M为输入数字的总数。

leetcode 17.电话号码的字母组合相关推荐

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

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

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

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

  3. leetcode 17. 电话号码的字母组合 思考分析

    题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 思考与递归程序 解空间树的宽度是输入数字对应的字符的个 ...

  4. [LeetCode] 17. 电话号码的字母组合

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

  5. LeetCode 17. 电话号码的字母组合(回溯)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: ...

  6. leetcode —— 17. 电话号码的字母组合

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

  7. leetcode 17. 电话号码的字母组合

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

  8. C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    一.解题思路 用map可以加快查询速度,DFS深度搜索,DFS是一种很常见的对于多循环或者n!的好的搜索算法. 二.代码:C++ void init(map<char, string> & ...

  9. LeetCode 17 电话号码的字母组合

    https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 解决方案 class Solution {public ...

最新文章

  1. 北大联合UCLA发表论文:9头以上Transformer就能模拟CNN!
  2. 运维笔试Shell编程题
  3. PAT1034 Head of a Gang (30)(并查集)
  4. 分布式工具的一次小升级⏫ 1
  5. word 替换 增加引号_如何在Word 2013文档中替换部分(不是全部)智能引号
  6. mysql group by 重复_mysql – 使用GROUP BY删除重复项的查询
  7. php内容管理器是什么原因,有什么好的php内容管理后台吗?打算试水接单的大三狗提问...
  8. Django 缓存系统
  9. 关于原生AJAX和jQueryAJAX的编程
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的博客系统
  11. Flash 环境 全屏效果
  12. flask+uwsgi 在调试过程中让python文件的更改自动重启uwsgi
  13. 1.6数组-像素翻转
  14. Java 添加、验证PDF 数字签名
  15. C语言贪吃蛇用VC2022
  16. 十七年未盈利,硅谷最神秘独角兽Palantir的盈利魔咒何时破?
  17. matlab抠图数据,MATLAB抠图
  18. c语言中三分之一次方怎么表示,2的3次方怎么写
  19. WFA发布LTE-U共存测试计划 Wi-Fi和LTE-U将公平共享频谱
  20. python学习笔记(三)之字符串的处理

热门文章

  1. ADSP-21569/ADSP-21593的开发入门(中)
  2. [勇者闯LeetCode] 191. Number of 1 Bits
  3. 华为平板可以安装python_10 个可以在平板电脑上使用的 Python 编辑器
  4. 磁盘镜像分析工具Autopsy
  5. cocos creator慢镜头
  6. 探寻智能网联趋势下“中国模式”创新崛起之路
  7. 小森动画回忆录(二)-哆啦A梦主界面
  8. jquery serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。
  9. 【Django】项目中调用深度学习模型model.predict()(Django两种启动方式runserver和uwsgi的区别)
  10. 实现本地 Markdown 博客文章自动发送到博客园