一道Java面试题,电话号码与英文字母如何转化?
2009-07-25 11:39
441 查看
题目:从图中,我们可以发现26个字母分布在2-9这8个数字键上。某人的电话号码是65967427,观察单词“olympics”,可以发现:字母o位于数字键6上,字母l位于数字键5上,… 字母s 位于数字键7上。此时,我们说olympics是65967427对应的一个字母组合。65967427还可以对应其它很多种字母组合,例如:mjwmpgap也是其中之一。以C语言编写函数 :int transfer(int number)。该函数的输入为一个电话号码(允许输入为3位到11位的十进制数),在屏幕上输出该数字对应的所有字母组合,并返回组合的总数。如果数字中包含1或者0,由于没有与之对应的字母,则直接返回0。当数字小于3位或者大于11位时,亦没有对应字母组合,返回0。
package com.cric.telephone;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class TelephoneToWord {
/**
* @param args
*/
public static void main(String[] args) {
// 数字键与英文单词的对应字典word
char number1[] = { '1' };
char number2[] = { 'A', 'B', 'C' };
char number3[] = { 'D', 'E', 'F' };
char number4[] = { 'G', 'H', 'I' };
char number5[] = { 'J', 'K', 'L' };
char number6[] = { 'M', 'N', 'O' };
char number7[] = { 'P', 'Q', 'R', 'S' };
char number8[] = { 'T', 'U', 'V' };
char number9[] = { 'W', 'X', 'Y', 'Z' };
char number0[] = { '0' };
// 将Word存入HashMap
Map<Integer, char[]> wordmap = new HashMap();
wordmap.put(1, number1);
wordmap.put(2, number2);
wordmap.put(3, number3);
wordmap.put(4, number4);
wordmap.put(5, number5);
wordmap.put(6, number6);
wordmap.put(7, number7);
wordmap.put(8, number8);
wordmap.put(9, number9);
wordmap.put(0, number0);
System.out.println((char[]) wordmap.get(5));
System.out.println("Input A Telephon Number:");
Scanner input = new Scanner(System.in);
long telephonenumber = input.nextLong();
ArrayList<char[]> arraytelephone = telephoneWord(telephonenumber,
wordmap);
int listsize = arraytelephone.size();
switch (listsize) {
case 7:
buildTelephoneNumber7(arraytelephone, listsize);
break;
case 8:
buildTelephoneNumber8(arraytelephone, listsize);
break;
case 11:
buildTelephoneNumber11(arraytelephone, listsize);
break;
}
}
private static void buildTelephoneNumber11(
ArrayList<char[]> arraytelephone, int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
for (int i7 = 0; i7 < arraytelephone.get(7).length; i7++) {
english[7] = arraytelephone.get(7)[i7];
for (int i8 = 0; i8 < arraytelephone
.get(8).length; i8++) {
english[8] = arraytelephone.get(8)[i8];
for (int i9 = 0; i9 < arraytelephone
.get(9).length; i9++) {
english[9] = arraytelephone
.get(9)[i9];
for (int i10 = 0; i10 < arraytelephone
.get(10).length; i10++) {
english[10] = arraytelephone
.get(10)[i10];
String str = String
.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
}
}
}
}
private static void buildTelephoneNumber8(ArrayList<char[]> arraytelephone,
int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
for (int i7 = 0; i7 < arraytelephone.get(7).length; i7++) {
english[7] = arraytelephone.get(7)[i7];
String str = String.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
}
private static void buildTelephoneNumber7(ArrayList<char[]> arraytelephone,
int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
String str = String.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
public static ArrayList<char[]> telephoneWord(long telephonenumber,
Map<Integer, char[]> wordmap) {
ArrayList<char[]> arraytelephone = new ArrayList<char[]>();
String str = String.valueOf(telephonenumber);
char ctelephonenumber[] = str.toCharArray();
if ((ctelephonenumber.length != 7) && (ctelephonenumber.length != 8)
&& (ctelephonenumber.length != 11)) {
System.out.println("wrong numbe!");
}
for (int i = 0; i < ctelephonenumber.length; i++) {
switch (ctelephonenumber[i]) {
case '1':
char number1[] = wordmap.get(1);
arraytelephone.add(i, number1);
break;
case '2':
char number2[] = wordmap.get(2);
arraytelephone.add(i, number2);
break;
case '3':
char number3[] = wordmap.get(3);
arraytelephone.add(i, number3);
break;
case '4':
char number4[] = wordmap.get(4);
arraytelephone.add(i, number4);
break;
case '5':
char number5[] = wordmap.get(5);
arraytelephone.add(i, number5);
break;
case '6':
char number6[] = wordmap.get(6);
arraytelephone.add(i, number6);
break;
case '7':
char number7[] = wordmap.get(7);
arraytelephone.add(i, number7);
break;
case '8':
char number8[] = wordmap.get(8);
arraytelephone.add(i, number8);
break;
case '9':
char number9[] = wordmap.get(9);
arraytelephone.add(i, number9);
break;
case '0':
char number0[] = wordmap.get(0);
arraytelephone.add(i, number0);
break;
}
}
return arraytelephone;
}
}
package com.cric.telephone;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class TelephoneToWord {
/**
* @param args
*/
public static void main(String[] args) {
// 数字键与英文单词的对应字典word
char number1[] = { '1' };
char number2[] = { 'A', 'B', 'C' };
char number3[] = { 'D', 'E', 'F' };
char number4[] = { 'G', 'H', 'I' };
char number5[] = { 'J', 'K', 'L' };
char number6[] = { 'M', 'N', 'O' };
char number7[] = { 'P', 'Q', 'R', 'S' };
char number8[] = { 'T', 'U', 'V' };
char number9[] = { 'W', 'X', 'Y', 'Z' };
char number0[] = { '0' };
// 将Word存入HashMap
Map<Integer, char[]> wordmap = new HashMap();
wordmap.put(1, number1);
wordmap.put(2, number2);
wordmap.put(3, number3);
wordmap.put(4, number4);
wordmap.put(5, number5);
wordmap.put(6, number6);
wordmap.put(7, number7);
wordmap.put(8, number8);
wordmap.put(9, number9);
wordmap.put(0, number0);
System.out.println((char[]) wordmap.get(5));
System.out.println("Input A Telephon Number:");
Scanner input = new Scanner(System.in);
long telephonenumber = input.nextLong();
ArrayList<char[]> arraytelephone = telephoneWord(telephonenumber,
wordmap);
int listsize = arraytelephone.size();
switch (listsize) {
case 7:
buildTelephoneNumber7(arraytelephone, listsize);
break;
case 8:
buildTelephoneNumber8(arraytelephone, listsize);
break;
case 11:
buildTelephoneNumber11(arraytelephone, listsize);
break;
}
}
private static void buildTelephoneNumber11(
ArrayList<char[]> arraytelephone, int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
for (int i7 = 0; i7 < arraytelephone.get(7).length; i7++) {
english[7] = arraytelephone.get(7)[i7];
for (int i8 = 0; i8 < arraytelephone
.get(8).length; i8++) {
english[8] = arraytelephone.get(8)[i8];
for (int i9 = 0; i9 < arraytelephone
.get(9).length; i9++) {
english[9] = arraytelephone
.get(9)[i9];
for (int i10 = 0; i10 < arraytelephone
.get(10).length; i10++) {
english[10] = arraytelephone
.get(10)[i10];
String str = String
.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
}
}
}
}
private static void buildTelephoneNumber8(ArrayList<char[]> arraytelephone,
int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
for (int i7 = 0; i7 < arraytelephone.get(7).length; i7++) {
english[7] = arraytelephone.get(7)[i7];
String str = String.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
}
private static void buildTelephoneNumber7(ArrayList<char[]> arraytelephone,
int listsize) {
char english[] = new char[listsize];
for (int i = 0; i < arraytelephone.get(0).length; i++) {
english[0] = arraytelephone.get(0)[i];
for (int i1 = 0; i1 < arraytelephone.get(1).length; i1++) {
english[1] = arraytelephone.get(1)[i1];
for (int i2 = 0; i2 < arraytelephone.get(2).length; i2++) {
english[2] = arraytelephone.get(2)[i2];
for (int i3 = 0; i3 < arraytelephone.get(3).length; i3++) {
english[3] = arraytelephone.get(3)[i3];
for (int i4 = 0; i4 < arraytelephone.get(4).length; i4++) {
english[4] = arraytelephone.get(4)[i4];
for (int i5 = 0; i5 < arraytelephone.get(5).length; i5++) {
english[5] = arraytelephone.get(5)[i5];
for (int i6 = 0; i6 < arraytelephone.get(6).length; i6++) {
english[6] = arraytelephone.get(6)[i6];
String str = String.valueOf(english);
System.out.println(str);
}
}
}
}
}
}
}
}
public static ArrayList<char[]> telephoneWord(long telephonenumber,
Map<Integer, char[]> wordmap) {
ArrayList<char[]> arraytelephone = new ArrayList<char[]>();
String str = String.valueOf(telephonenumber);
char ctelephonenumber[] = str.toCharArray();
if ((ctelephonenumber.length != 7) && (ctelephonenumber.length != 8)
&& (ctelephonenumber.length != 11)) {
System.out.println("wrong numbe!");
}
for (int i = 0; i < ctelephonenumber.length; i++) {
switch (ctelephonenumber[i]) {
case '1':
char number1[] = wordmap.get(1);
arraytelephone.add(i, number1);
break;
case '2':
char number2[] = wordmap.get(2);
arraytelephone.add(i, number2);
break;
case '3':
char number3[] = wordmap.get(3);
arraytelephone.add(i, number3);
break;
case '4':
char number4[] = wordmap.get(4);
arraytelephone.add(i, number4);
break;
case '5':
char number5[] = wordmap.get(5);
arraytelephone.add(i, number5);
break;
case '6':
char number6[] = wordmap.get(6);
arraytelephone.add(i, number6);
break;
case '7':
char number7[] = wordmap.get(7);
arraytelephone.add(i, number7);
break;
case '8':
char number8[] = wordmap.get(8);
arraytelephone.add(i, number8);
break;
case '9':
char number9[] = wordmap.get(9);
arraytelephone.add(i, number9);
break;
case '0':
char number0[] = wordmap.get(0);
arraytelephone.add(i, number0);
break;
}
}
return arraytelephone;
}
}
相关文章推荐
- [Algorithms] [NOT SOLVED] [@尝试去实现] [推荐] 微软谷歌的一道面试题:如何分隔没有空格标点的英文句子
- javascript面试题:如何把一句英文每个单词首字母大写?
- java如何把一篇英文按照空格分割并按照字母顺序排序
- 一道Java面试题 读取一篇英文文章,输出其中出现单词的次数最多的5个,写java函数
- java实现数字金钱转化为英文字母显示
- java统计英文字母、空格、数字和其它字符的数目
- 一道Java线程面试题。3个线程顺序打印10次ABC.
- 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
- 多个对象访问共享对象和数据的方式——一道JAVA就业面试题的不同解法
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 微软Java面试题-按照字母排序
- 史上最难的一道Java面试题
- 求助:如何判断输入的字符串为英文字母……
- 如何将java项目转化为web项目
- 对一道面试题的思考(java中的引用传递)
- Java英文面试题(口语)
- 【Java面试题】45 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
- java 数字与英文字母相互转换
- 一道网易Java简单集合面试题「我感觉你做不出来」
- 另一道看上去很吓人的面试题:如何交换a和b两个整数的值,不用额外空间 (Rev. 2)