【算法】九键输入法

news/2024/10/18 6:08:29/

题目:

输入数字字符串, 输出这串字符对应的九键输入法有可能出现的所有情况

算法:

  • 定义了一个全局变量 g_numStr,其中存储了每个数字对应的字母。
  • 定义了一个递归函数 str_combine,用于将每个数字对应的字母进行组合。
  • str_combine 函数接受四个参数:digits 表示输入的数字字符串,i 表示当前处理的数字在 digits 中的下标,vCombine 表示存储所有字母组合结果的 vector,tmp 表示当前已经组合好的字母。
  • i 的值等于 digits 的长度时,说明所有数字已经被处理完,将当前的组合结果 tmp 存入 vCombine 中,并返回。
  • for 循环中,枚举当前数字对应的所有字母,对每个字母进行递归处理。在递归调用中,将当前字母加入到 tmp 中,将 i 加一,继续处理下一个数字。
  • main 函数中,先读入输入的数字字符串,然后调用 letter_comvibinations 函数获取所有字母组合结果,并将结果输出到屏幕上。

源码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;vector<string> g_numStr = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };void str_combine(string digits, int i, vector<string>& vCombine, string tmp)
{if (i == digits.size()){vCombine.push_back(tmp);return;}for (auto ch : g_numStr[digits[i] - '0']){str_combine(digits, i + 1, vCombine, tmp + ch);}
}vector<string> letter_comvibinations(string digits)
{vector<string> vCombine;str_combine(digits, 0, vCombine, "");return vCombine;
}int main()
{string digits;cin >> digits;vector<string> vCombine = letter_comvibinations(digits);for (auto& e : vCombine){cout << e << " ";}cout << endl;return 0;
}


http://www.ppmy.cn/news/58094.html

相关文章

自动驾驶TPM技术杂谈 ———— I-vista验收标准(试验规程)

文章目录 术语介绍试验准备场地要求环境要求精度要求边界车辆&路沿石 试验方法能力试验双边界车辆平行车位白色标线平行车位双边界车辆垂直车位白色标线垂直车位方柱垂直车位双边界车辆斜向车位白色标线斜向车位 新功能评价平行车位远程操控泊入泊出试验垂直车位远程操控泊…

无损以太网与网络拥塞管理(PFC、ECN)

无损以太网 无损以太网&#xff08;Lossless Ethernet&#xff09;是一种专门用于数据中心网络的网络技术&#xff0c;旨在提供低延迟、高吞吐量和可靠性的传输服务。它是在传统以太网的基础上进行了扩展&#xff0c;引入了新的拥塞管理机制&#xff0c;以避免数据包丢失和网络…

前端存储 Cookie、Web Storage(localStorage 与 sessionStorage)

cookie 由来&#xff1a;cookie 最初的目的是为了维持前端存储的临时状态而产生的。原理&#xff1a; 浏览器发出无状态请求服务器返回响应&#xff0c;携带 cookie 信息浏览器发出接口请求&#xff0c;携带 cookie 信息之后就是前端与服务器建立完成连接后的接口返回了 生成机…

浅聊AIOT

引言 IoT是(Internet of Things)的简称&#xff0c;也就是人们常说的物联网&#xff1b;随着智能硬件的发展和推广&#xff0c;制造成本也随之下降&#xff0c;很多的厂家也慢慢地拥抱网络互联&#xff0c;逐步实现设备互联&#xff0c;也就进入了人们常说的万物互联时代。虽然…

IDEA常用提升效率的操作小记

IDEA目前是使用最广泛的Java开发工具之一了&#xff0c;虽然是收费的&#xff0c;但是也提供了免费的社区版&#xff0c;并且收费版也支持使用github的开源项目&#xff0c;使用免费license&#xff0c;虽然每年都要续&#xff0c;我用的就是开源项目申请的免费license。 开发…

FM33A048B I2C

I2C 模块实现MCU 与外部I2C 接口器件之间的同步通信&#xff0c;硬件实现串并转换。支持I2C 的主机模式&#xff0c;不支持从机模式和多主机模式。 特点&#xff1a; ⚫ 只支持I2C 主机模式, 不支持从机模式和多主机模式 ⚫ 支持7 位或10 位从机地址 ⚫ 传输速度支持标准模式(1…

亚马逊云科技赋能客户,为海思科打造安全高效的营销业务中台系统

羽翼渐丰&#xff0c;翱翔云端 携手亚马逊云科技&#xff0c;打造互联网级企业解决方案 秉承“为客户创造价值”的理念&#xff0c;在公司发展过程中&#xff0c;博智信息先后服务了众多知名企业&#xff0c;客户行业覆盖制造、零售、餐饮、科技、电子等。经过近20年的发展&a…

6. 计算机网络

6. 计算机网络 常见面试题 说说计算机网络有哪两种通信方式?⭐⭐⭐ 第一种方式:客户-服务器方式。这种传统的方式是互联网上最常见的方式。客户是服务请求方,服务器是服务提供方。 C/S模型有一个特例,那就是B/S(Browse/Server)模型,即浏览器/服务器模式,也叫B/S结构。…