电话号码对应的英语单词

article/2025/9/7 10:45:18

问题:

电话的号码盘一般可以用于输入字母,如用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);}}
}


 


http://chatgpt.dhexx.cn/article/3NSXLc5X.shtml

相关文章

地址的概念

前言&#xff1a;地址的概念 1. 地址概念及各个单位换算1.1 地址的概念1.2 单位换算1.3 举例说明&#xff0c;加深理解1.4 关于地址的宽度 1. 地址概念及各个单位换算 1.1 地址的概念 计算机内的数据是存储在地址里面的&#xff0c;地址又是以字节&#xff08;Byte&#xff09…

地址的地址?

在visual studio 2019中 #include <stdio.h> #include <stdlib.h> typedef struct student { int value; struct student* next_stu; }Student; Student * creatlist(); void insertlist(Student * list,int value); int main() { Student *my_list…

GoldenDict 上的那些精美版权词典(附下载地址)(英语、俄语、梵语、印地语)

转载▼ 标签&#xff1a; 杂谈 国内的有道词典和金山词典由于使用方便、宣传到位得到了许多同学的喜爱。在开源软件的领域&#xff0c;也有一款非常好用的词典GoldenDict&#xff0c;它的强项在于可以直接使用众多词典厂商的词库。那些正规的词典厂商通常购买了词典的版权…

【GO】map转json

咔咔博客之map转json 跟结构体转json一样都使用的是json.Marshal()方法 最后需要就是把字节转为字符串使用string即可 案例 func main() {// 定义了interface 后边就可以跟任意类型了mMap : make(map[string]interface{})mMap["博客地址"] "blog.fangkang.to…

Json4s的一些用法 JSon转对象实体 Json转Map Map转Json

Json4s 全称就是Json For Scala&#xff0c;为Scala而生 首先上Maven依赖配置&#xff0c;其实Spark中自带了Json4s如果是编写Spark代码,并不需要单独引用Json4s的依赖了 <dependency><groupId>org.json4s</groupId><artifactId>json4s-jackson_2.11&…

map转json字符串字段排序

需求&#xff1a;map转成json字符串&#xff0c;要求字段按字母升序排列 package com.data.test;import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFe…

Map与JSON数据之间的互相转化

Map与JSON mapmap转JSON字符串JSON字符串转JSON对象Map转JSON对象JSON字符串转MapJSON对象转MapJSON对象转JSON字符串IDEA功能快捷键 map 此内容是方便博主自己记忆内容&#xff0c;不用于公开学习资料&#xff0c;若发现语法错误&#xff0c;自行更正&#xff0c;勿喷 map转…

Map和JSON之间的转化

Map和JSON之间的转化 1 添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>2 测试 2.1 Map转JSON //1.map转jsonTestpublic void testJson01()…

js中三个等号

&#xff1a;三个等号我们称为等同符&#xff0c;当等号两边的值为相同类型的时候&#xff0c;直接比较等号两边的值&#xff0c;值相同则返回true&#xff0c;若等号两边的值类型不同时直接返回false。

两个等号(==)和三个等号(===)的区别

2019独角兽企业重金招聘Python工程师标准>>> 两个等号()和三个等号()的区别&#xff1a; 1. ""表示&#xff1a;equality -> 等同 的意思&#xff0c;""使用两个等号时&#xff0c;如果两边值的类型不同的时候&#xff0c;是要先先进行类型转…

【javaScript】JavaScript中一个等号、二个等号、 三个等号 的区别(详细例子)

一、单等于号 1.单等于号具有赋值作用 我们在定义变量时&#xff0c;会对变量进行赋值&#xff0c;例如a1&#xff0c;就是把1赋值给a。 这就是在初始化对象的时候进行赋值。 2.单等于号具有引用对象作用 比如我们写了 var a 1;var b a ,表示变量a指向的内存地址与b相同&…

JavaScript 中 的等号(==)/不等号(!=) 和全等号(===)/非全等号(!==)

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/1579702/blog/220269

有等号“=“的情况

.有等号""的情况 比如a这个字母&#xff0c;ASCII码是65&#xff0c;转换成二进制是01000001&#xff0c;转换成六个一组010000 | 01&#xff0c;就会发现后面不足以组成六位数&#xff0c;就可以在后面添零&#xff0c;就变成了&#x1f449;010000 | 010000&#…

LaTeX:公式等号对齐

LaTeX \LaTeX LATE​X 公式等号对齐 目录 LaTeX \LaTeX LATE​X 公式等号对齐0. 导包1. 对齐 0. 导包 使用公式对齐的功能&#xff0c;需要导入包 \usepackage{amsmath} 1. 对齐 使用如下的格式&#xff1a; \begin{align*}* & * \\& * \\& * \end{align*}或者 …

关于全等号

我们都知道ECMAScript 中的等于操作符用两个等于号&#xff08;&#xff09;表示&#xff0c;如果操作数相等&#xff0c;则会返回 true。不等于操作符用叹号和等于号&#xff08;!&#xff09;表示&#xff0c;如果两个操作数不相等&#xff0c;则会返回 true。这两个操作符都…

一个等号= 二个等号== 三个等号=== 的区别

一个等号是赋值操作&#xff0c;先转换类型再比较&#xff0c;先判断类型&#xff0c;如果不是同一类型直接为false。 判断规则 如果两个都是数值&#xff0c;并且是同一个值&#xff0c;那么[相等]&#xff1b;(&#xff01;例外)的是&#xff0c;如果其中至少一个是NaN&…

四川计算机专业三本大学排名,四川三本大学排名及分数线2021【文科 理科】

距离2018年高考还有不到一个月的时间了&#xff0c;四川省共有3所三本大学参与了2018四川三本大学排名及分数线&#xff0c;以下是四川三本大学排名及分数线2018具体榜单&#xff1a;四川三本大学排名学校名称所在地录取批次平均分 1西南民族大学四川本科其他批432 2西昌学院四…

2021年四川平昌高考成绩查询,四川省平昌县平昌中学2021年排名

学校信息的介绍是比较多的&#xff0c;而其中对于学校所公布的各方面信息来说&#xff0c;有需要的学生是可以考虑根据自己的情况来进行判断等&#xff0c;而对于排名方面的介绍来说&#xff0c;是可以考虑到每个学生的自己的想法&#xff0c;以及优势来对该学校进行决定。 四川…

2021四川高考成绩查询电话,四川高考成绩查询电话号码多少,2021年四川高考查分电话...

2020年四川高考查询方式目前官方暂未公布&#xff0c;具体查询电话可以去聚志愿网站查询&#xff0c;上面设有四川高考成绩电话查询、公众号查询、短信查询以及网址查询。下面是小编整理的2019年四川高考成绩查询方法&#xff0c;考生可以参考。 一、2019年四川高考成绩查询方式…

四川岳池2021年高考成绩查询,2021年岳池中学升学率高不高?

【引语】了解一个学校&#xff0c;就要全方位的进行了解&#xff0c;清楚学校的师资&#xff0c;录取分数线&#xff0c;升学率等等&#xff0c;四川初升高升学网网编为同学们梳理了2021年岳池中学升学率高不高的相关信息&#xff0c;更多最新资讯可以关注四川初升高升学网公众…