电话号码对应的英语单词

《编程之美》——电话号码对应英语单词 问题: 电话的号码盘一般可以用于输入字母,如用2可以输入a,b,c,用3可以输入d,e,f等。 对于号码5869872,可以依次输出其代表的所有字母组合。如:jtmwtpa,jtmwtpb……… 1、您能否可以根据这样的对应关系设计一个程序,尽可能快地从这些字母组合中找到一个有意义的单词来描述一个电话号码呢?如:可以用单词“computer”来描述号码26678837。分析与解法: 对于问题 阅读详情

问题:

电话的号码盘一般可以用于输入字母,如用2可以输入a,b,c,用3可以输入d,e,f等。

对于号码5869872,可以依次输出其代表的所有字母组合。如:jtmwtpa,jtmwtpb.........

1、您能否可以根据这样的对应关系设计一个程序,尽可能快地从这些字母组合中找到一个有意义的单词来描述一个电话号码呢?如:可以用单词“computer”来描述号码26678837。

分析与解法:

对于问题1,不妨掏出电话来研究,我们可以发现,除了0,1之外,其他数字上最少都有3个字符,其中7和9上有4个字符,我们可以假设0,1都是空字符。

首先讲问题简单化,若电话号码只有一位数,比如说4,那么其代表的单词为g,h,i,据此可以画出一颗排列树,如下:

 

接着若电话号码升级到两位数,比如42,又将如何呢?分两步走,从左到右,在选择一个第一位数字所代表的字符的基础上,遍历第二位数字所代表的字符,直到遍历完第一位数字代表的所有字符。就拿42来说,4所能代表的字符为ghi,2所能代表的字符为abc,首先让4代表g,接着遍历2所能代表的所有字符,即可得到ga,gb,gc,然后再让4代表h,再次遍历2所能代表的所有字符,即可得到ha,hb,hc,最后让4代表i,那么同理可得到ia,ib,ic.

如图

问题1的解法:

将各个数字所能代表的字符存储在一个二维数组中,其中0,1所代表的字符为空字符,

 char[][]  c={{},{},{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'},{'m','n','o'},{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}};

并将各个数字所能代表的字符总数记录于另一个数组中:
int[] total = {0,0,3,3,3,3,3,4,3,4}; 

用一个数组存储电话号码:

int[tellength] number;

将数字目前所代表的字符在其所能代表的字符集中的位置用一个数组存储起来:

int[tellength] answer;

举个例子,若number[0]=4,即电话号码的第一位为4,若answer[0]=2,即4目前代表的字符为:

c[number[0]][answer[0]]=c[4][2] = 'i';

问题1的递归解法如下:

public class Test_3_2 {
	public static void main(String[] args) {
		int[] number={2,6,6,7,8,8,3,7};
		int len = number.length;
		int[] answer=new int[len];
		RecursiveSearch(number,answer,0,len);

	}

	public static void RecursiveSearch(int[] number,int[] answer,int index,int n){
		//index说明电话对电话号码第几位进行循环
		//n为电话号码位数
		char[][]  c={{},{},{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'},{'m','n','o'},{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}};
		int[] total = {0,0,3,3,3,3,3,4,3,4};
		if(index == n){
			for(int i = 0;i<n;i++){
				System.out.print(c[number[i]][answer[i]]);
				
			}
			System.out.print(";");
			return;
		}
		for(answer[index] = 0;answer[index]<total[number[index]];answer[index]++){
			RecursiveSearch(number,answer,index+1,n);
		}
	}
}


 

电话号码对应英语单词 对于号码5869872,可以依次输出其代表的所有字母的组合,如:JTMWTPA、JTMWTPB 立即下载

相关推荐

AGX Orin设计-外围电路设计之一

AGX ORIN是英伟达Jetson系列中算力规格最高端的模组,其高达200TOPS/275TOPS的算力可以为各类场景提供澎湃的算力支持,本篇文章针对AGX ORIN的常规外围电路设计做分析描述。

zhiyuchenkeji的博客 4481

C语言电话号码的字母组合

C语言电话号码的字母组合,给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意0和1不对应任何字母。

piqiangqiang的博客 727

ArcGIS Pro MCP 开源:自然语言驱动的 AI 制图与分析

人工智能与大模型的快速发展,正推动专业软件从“手动操作”走向“自然语言控制”。模型上下文协议(MCP)作为连接 AI 与外部工具的标准接口,类似为 AI 安装的“USB 接口”,让大模型可以通过统一协议调用 GIS 软件能力。基于 ArcPy 构建的 ArcGIS Pro MCP 项目,将复杂的地图制图与空间分析封装为 112 个可被 AI 调用的工具,使文本指令直接驱动软件完成数据加载、符号化、出图乃至叠加统计等任务。对 GIS 工程师、数据分析师与测绘规划从业者而言,该开源项目显著降低专业软件使用门槛,

weixin_29054195的博客 276

英文中电话号码的正确写法

英文中电话号码的正确写法 转载于:https://www.cnblogs.com/LittleTiger/p/4705371.html

weixin_30558305的博客 4444

直流无刷电机FOC控制算法 理论到实践 —— 理论(二)

在上一章节,我们对于FOC大体有了一个介绍,本博文将详细描述有关Clark变化、Park变化、反Park变化以及SVPWM的理论实现原理,也即相关数学运算实现。

爱出名的狗腿子 1万+

【20260309】【亲测可用】【异常】Get https://registry-1.docker.io/v2/: net/http: request canceled

【异常】Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection。

奶爸的编程之路,也就一周冷个三天 2万+

国际标准电话和手机号码的正确写法

您是不是从来没有接到过外商的电话?您知道您留下的联系方式外商根本联系不到你吗? 您知道吗?很多企业包括外贸公司在名片和网站上留下的电话号码却是打不通的! 如果在搜索引擎里输入“环球商业联盟”,随便挑选几家,你会发现很多问题: 如果您的名片上印的是:0086-755-86285739或者+86-0755-86285739和+86-013738258505;外商能找到你吗? 看看手中的名片,这两

kate 13万+

【YOLO26实战全攻略】10——YOLO26+SAM3实战:从检测到像素级分割的全流程指南(含PCB缺陷检测案例)

本文聚焦YOLO26与SAM3的融合应用,系统讲解“检测+分割”的三种核心模式:YOLO26原生分割(轻量高效)、YOLO26检测+SAM3精细分割(精度极致)、SAM3自动标注+YOLO26蒸馏(低成本冷启动)。从环境搭建、数据集准备、模型训练、性能优化到边缘部署,提供 step-by-step 实操教程,配套完整可运行代码与执行结果。结合虚拟PCB缺陷检测案例,展示像素级缺陷识别与几何参数测量的工业级应用流程。本文兼顾新手入门与进阶提升,注重实用价值,读者可直接参考搭建自己的分割系统。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 626

编程之美之电话号码对应英语单词

题目一:根据电话上字母和数字的对应关系,用一个有意义的单词来表述一个电话号码,如用computer表示26678837 题目二:反过来,给定一个电话号码,是否可以用一个单词来表示呢?怎样表示最快呢?显然不是所有的电话号码都可以对应到单词上去 首先来看看leetcode上一个类似的题目: Letter Combinations of a Phone Number   G

fangjian1204的专栏 1785

【超详细】计算机组成原理总结及思维导图

计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和地址码组成 4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变 5.机器以运...

圣三一 10万+

【100%通过率】2023华为od机试C卷【电脑病毒感染】C++ 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1727

编程之美3.2 电话号码对应英语单词

/**       * 编程之美 电话号码对应英语单词       * 题目:       *  手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,       *  要求对一段数字,输出其代表的所有可能的字母组合,如5869,可能代表JTMW、JTMX...       *  以下程序用DFS得解,但:      

1523

【C语言趣味教程】(0) 专栏介绍

这是一套C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出"有趣的干货" !本系列教程不管是零基础还是有基础的读者都可以阅读,可以先看看目录!标题前带星号 (*) 的部分不建议初学者阅读,因为内容难免会超出当前章节的知识点,面向的是对 C 语言有一定基础或已经学过

有道无术, 术尚可求。有术无道, 止于术。 2万+

编程之美——电话号码对应英语单词

编程之美——电话号码对应英语单词     电话号码盘一般可以用于输入字母。如用2可以输入A,B,C,用3可以输入D,E,F等...     问题1:可以根据这样的对应关系设计一个程序,尽可能快的从这些字母组合中找到一个有意义的单词来表述一个电话号码呢?     程序如下: #include using namespace std; #define N 4 char c[10][10]

chenglinhust的专栏 2040

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

每日一题(82) - 电话号码对应的英语单词

题目来自编程之美 题目: 电话的号码盘一般可以用于输入字母。如用2可以输入A、B、C,用3可以输入D、E、F等。 给出一个号码,它可以对应许多个字母组合。如号码5869872,它对应的字母组合可以是JTMWTPA、JTMWTB······ 1)给出一个电话号码,从 设计程序,尽可能从这些字母组合中,找到一个有意义的单词来表述一个电话号码。如单词"computer"来描述号码26678837

思考,思考,再思考~ 2059

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

编程之美3.2电话号码对应英语单词 java版

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package chart_3

TT285955925的博客 708

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

3.2电话号码对应英语单词

<br />给定电话号码,输出其对应键盘代表的所有字母组合。如:给定号码5869872,输出jtmwtpa、jtmwtpb.....<br />#include <stdio.h> #include <string.h> //键盘映射 char keyboard[10][5] = { "", //0 "", //1 "abc", //2 "def", //3 "ghi", //4 "jkl", //5 "mno", //6 "pqrs", //7 "tuv",

softdzf的专栏 911
上一篇: 寻找发帖“水王”及扩展题
下一篇: 01背包问题
tanyujing
博客等级 码龄18年 135粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值