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

力扣17:电话号码的字母组合

力扣17:电话号码的字母组合

  • 题目
  • 思路
  • 代码

题目

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
在这里插入图片描述

思路

在遇到需要我们得到所有的组合所有的方案这类话的时候我们自然而然就能想到使用回溯的办法,这道题也不例外。那么想要使用回溯我们首先要知道回溯的结束条件是什么?参数digits是一个字符串里面存储着一串数字我们需要得到这一串数字在电话上所能代表的所有字母组合那么回溯的结束条件就很好判断了:字符串的长度。只要我们的字符串长度等于参数digits的长度我们就可以结束这一轮了也就是得到一种结果。其次这道题我们还需要完成数字和所代表的字符串的映射,因为一个数字所代表的字母不止有一个所以我们需要完成他们俩的映射,这个也很简单使用哈希表就可以了。这两个问题解决了这道题也就迎刃而解了。

代码

class Solution {
public:void BackCall(vector<string>& res, unordered_map<char, string>& um,string& digits, int index, string tmp) {if (index == digits.size()) {res.push_back(tmp);}//得到数字所代表的字符串string chars = um[digits[index]];for (auto& ch : chars) {tmp.push_back(ch);BackCall(res, um, digits, index + 1, tmp);tmp.pop_back();}}vector<string> letterCombinations(string digits) {// 经典的回溯问题vector<string> res;if (digits.size() == 0) {return res;}string tmp;unordered_map<char, string> um{{'2', "abc"}, {'3', "def"},  {'4', "ghi"}, {'5', "jkl"},{'6', "mno"}, {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"}};BackCall(res, um, digits, 0, tmp);return res;}
};
http://www.dtcms.com/a/303078.html

相关文章:

  • 若依【(前后端分离版)SpringBoot+Vue3】
  • Android通知(Notification)全面解析:从基础到高级应用
  • 数据结构:下三角矩阵(Lower Triangular Matrix)
  • Eigen 中矩阵的拼接(Concatenation)与 分块(Block Access)操作使用详解和示例演示
  • 秩为1的矩阵的特征和性质
  • WireShark 抓包
  • Spring Boot项目生产环境部署完整指南
  • 数学建模算法-day[13]
  • 判断回文链表【两种O(n)时间复杂度】
  • iOS WebView 调试实战,第三方脚本加载失败与内容安全策略冲突问题排查指南
  • 前端高级综合搜索组件 SearchBox 使用详解!
  • React中的合成事件解释和理解
  • 归档日志-binlog
  • C语言的各种区
  • 背包DP之混合背包
  • 解决安装anaconda3后如何打开anaconda navigator的问题
  • 解构远程智能系统的视频能力链:从RTSP|RTMP协议接入到Unity3D头显呈现全流程指南
  • 力扣刷题(第一百零一天)
  • 0728 哈希表折半查找树二叉树
  • 【mysql】创建视图查询当月累计销售额的案例
  • python案例分析:基于新能源汽车论坛评价数据情感分析的客户满意度研究,文本挖掘包括lda主题分析和词频分析、情感分析、网络语义分析
  • 搜索二维矩阵Ⅱ C++
  • 【无标题】暗物质衰减现象解释
  • 二十一、动植物类(自然生态)
  • 鱼皮项目简易版 RPC 框架开发(三)
  • Python 实现多服务器并发启动 SDK-C Master 与 Viewer 的分布式方案
  • [尚庭公寓]15-个人中心
  • 力扣-22.括号生成
  • C++初学者4——标准数据类型
  • JavaScript对象与Math对象完全指南