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

力扣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.xdnf.cn/news/16633.html

相关文章:

  • vue-grid-layout元素交换位置及大小
  • 【uniapp】---- 使用 uniapp 实现视频和图片上传且都可以预览展示
  • Python系统交互库全解析
  • Cloudflare CDN 中设置地域限制并返回特定界面
  • 基于Vue3.0+Express的前后端分离的任务清单管理系统
  • 虚拟地址空间:从概念到内存管理的底层逻辑
  • “本地计算机上的 mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止”解决方式
  • R语言与作物模型(DSSAT模型)技术应用
  • 从0开始学习R语言--Day60--EM插补法
  • 深入解析IPMI FRU规范:分区结构与字段标识详解
  • CMakelists.txt 实现多级目录编译
  • Kafka 3.9.1的KRaft模式部署
  • 【Spring Boot 快速入门】二、请求与响应
  • Java设计模式之<建造者模式>
  • 稳定币催化下,Web3 支付赛道将迎来哪些爆发?
  • 二十一、动植物类(自然生态)
  • CodeBuddy的安装教程
  • 神经网络的基本骨架-nn.Module的使用和卷积操作
  • 燃气管网运行工考试练习题
  • 如何提升 TCP 传输数据的性能?详解
  • 【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(一)
  • Windows 系统分辨率切换** 与 **Qt4 无边框窗口管理机制** 的交互
  • haproxy实列
  • 【深度学习优化算法】10:Adam算法
  • DDD领域驱动中瘦模型与富态模型的核心区别
  • SpringCloude快速入门
  • 2025最新Mybatis-plus教程(三)
  • java的break能加标签,return可以加标签吗
  • Java#包管理器来时的路
  • 常见认证机制详解