电话号码的字母序列

news/2024/11/29 20:41:44/文章来源:https://www.cnblogs.com/lichunlei/p/18577487

题目描述

输入一个仅包含数字 2-9 的字符串,输出所有它能表示的字母序列。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
0

输入

输入一个包含数字 2-9 的字符串,长度不超过6。

输出

按字典序输出所有能表示的字母序列,每行输出一个。

输入样例

23

输出样例

ad
ae
af
bd
be
bf
cd
ce
cf

解题思路

1.组合问题想回溯
2.一个回溯函数,一个返回结果的函数

题解

#include <iostream>
#include <map>
#include <vector>using namespace std;class Solution{
//首先保存数字与字母之间的映射
//使用private保护数据
private://使用二维数组const string num_letter[10]={"",//0"",//1"abc",//2"def","ghi","jkl","mno","pqrs","tuv","wxyz",};//接口函数,public
public://记录临时结果string s;//记录最终结果,要注意results包含多个字符组合,所以是用vector类型vector<string> result;//先定义回溯函数,其实就是递归函数啦~void backtracking(const string& digits,int index){//终止条件if(index==digits.size()){//最终结果result.push_back(s);return;}int digit=digits[index]-'0';//这一部非常重要,是把index指向的数字字符串转成了int类型string letters=num_letter[digit];//取相应字符串for(int i=0;i<letters.size();i++){s.push_back(letters[i]);backtracking(digits,index+1);s.pop_back();}}//使用回溯函数,返回最终结果vector<string> conbination(const string& digits){s.clear();result.clear();if(digits.size()==0){return result;}backtracking(digits,0);return result;}};int main(){Solution solution;string digits;cin >> digits;  // 从标准输入读取数字字符串vector<string> result = solution.conbination(digits);// 按行输出每一个字母组合for (const string& combination : result) {cout << combination << endl;}return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843656.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA-idea设置导航栏字体大小代码编辑区字体大小

一、设置导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font二、设置代码编辑区字体大小 Setting - Font - Size

Pycharm-Pycharm设置左侧导航栏字体大小和代码编辑区字体大小

一、左侧导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font - Size二、代码编辑区字体大小

DevEco Studio 实战第一节:字符串拼接与组件构建

DevEco Studio 实战第一节:字符串拼接与组件构建 引言 在现代软件开发中,TypeScript 提供了强类型的优势,而 DevEco Studio 作为华为推出的开发集成环境,提供了便捷的代码管理和版本控制功能。本文将通过一个简单的示例,介绍如何在 TypeScript 和 DevEco Studio 中进行字符…

WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗

在平时使用win11电脑时候偶发WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗的问题,一般重启后恢复正常,还有一种方法,打开任务管理器,找到Windows资源管理器选择重新启动,之后就恢复正常啦!代码成就万世基积沙镇海 梦想永在凌云意意气风发

【泛微E9】移动应用将页面按钮置灰

效果如下:实现方法: $load(function() {setTimeout(function() {var kpbm = $f("kpbm").val();var zcbm = $f("zcbm").val();const date = new Date();const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, 0); // 月…

超详细 HarmonyOS 开发教程之开发环境搭建指南

HarmonyOS开发环境搭建指南:DevEco Studio安装教程 一、系统要求 操作系统:Windows 10 64位或更高版本 RAM:至少8GB,推荐16GB 硬盘空间:至少10GB可用空间 处理器:Intel Core i5或更高配置 二、安装步骤 1. 下载DevEco Studio 2. 访问华为开发者联盟官网:https://develop…

用SS8050三极管实现一个开关功能,并测试集电极工作电流

测试一个简单的三极管开关电路原理图如图用一个SS8050三极管当作开关,控制小灯泡的亮灭,可调电阻调节偏置电压的大小来控制基极电流,分别接上A1和A2来测量基极电流和集电极电流实际工作时,电阻要调到10k,此时A1=406uA,A2=120.8mA三极管的放大倍数测量值为295,以上计算得…

基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

1.算法仿真效果vivado2019.2仿真结果如下:设置SNR=20db设置SNR=15db设置SNR=10db2.算法涉及理论知识概要在现代通信系统中,数字调制技术被广泛应用于无线通信、卫星通信以及有线通信等领域。其中,振幅键控(Amplitude Shift Keying, ASK)是一种简单的数字调制方式,通过改变…

“4步实现”CAD模型与实物以图搜图的精准匹配,“6倍效率提升”机械加工比对

在机械制造与加工领域,设计图纸与实物的比对是确保产品质量的重要环节。然而,传统比对方式耗时长、易出错,严重影响生产效率。针对这一痛点,思通数科推出了一套基于大模型技术的智能比对系统,集成以图搜图、实物比对和多视图生成等功能,为用户带来高效、精准的解决方案。…

大数据学习记录,Python基础(3)

算术运算符a = 3 b = 4 print(a + b) # 7 print(a - b) # -1 print(a * b) # 12 print(a / b) # 0.75 print(a % b) # 3 print(a ** b) # 81 print(a // b) # 0 整除比较(关系)运算符注意:=是赋值运算符,==是比较运算符 比较运算符的结果一定是bool类型的扩展知识:比较两个…

ECharts 实战

EChart 资源Vue-EChart 不想封装 Echart, 可以选用这种方案。 Vue-ECharts 是一个 Vue 组件,旨在简化在 Vue 应用中集成 ECharts 的过程。它封装了 ECharts 的初始化和使用逻辑,用户只需要在 Vue 模板中添加组件并传递相应的 props,即可轻松创建图表。 支持Vue2 & Vue3…

腾讯云 AI 代码助手:单元测试应用实践

在软件开发这一充满创造性的领域中,开发人员不仅要构建功能强大的软件,还要确保这些软件的稳定性和可靠性。然而,开发过程中并非所有任务都能激发创造力,有些甚至是重复且乏味的。其中,编写单元测试无疑是最令人头疼的任务之一,它虽然对于验证软件组件是否按预期工作至关…