gpt4 book ai didi

java - 如何将电话号码中的字符串关联打印为文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:08 26 4
gpt4 key购买 nike

我在为项目编写的方法方面需要一些帮助。该方法将电话号码更改为文本字符串列表。

您知道 2-9 在手机上有与他们相关联的字母。我想制作一个转换器,将 7 位数字更改为字符串列表。我想看看所有的可能性。我已经剪掉了所有的 1 和 0,因为它们没有任何字母。例如:如果我们的号码只有两位数,则 37 将是:

DP DQ DR DS EP EQ ER ES FP FQ FR FS.

到目前为止,我一直在尝试使用嵌套 for 循环,但没有得到正确的输出。任何帮助或想法都会很好。谢谢

(我不是要完整的代码,而是更像是关于如何做的建议)

最佳答案

解决方案的关键是使用下面代码中声明的 pad 数组。例如,在部分电话号码 763 中,

pad[7] 将产生数组 {'p','q','r'},

pad[6] 将产生数组 {'m','n','o'},

pad[3] 将产生数组 {'a','b','c'},

然后,使用递归方法 getAlpha(int[] num, int next, char[]alpha) 迭代每一种组合可能性,形成一个字母顺序的算法树。在树的每个叶子/末端节点,是一个完整的字母表数组,要附加到列表中。当它递归回到前一个数字位置时,只使用一个字母数组来重用/覆盖是可能的,因为字符串化的字母数组仅在到达叶/结束节点时附加。此处不包括 stringify(char[])。

getAlpha(int[] num) 是从递归的数字位置 0 开始的入口点方法。每个递归级别处理电话号码的下一位。

public class Z{
// 2D array [i][j]
// use phone digit as array index i
final char[][] pad = {
{'0'},
{'1'},
{'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'},
};

// This will be the horrendously long list of possible alphabetic codes
List<String> combinations = new ArrayList<String>();

void getAlpha(int[] num, int next, char[]alpha){
// iterate over all possible alphabets of next digit
for (int i=0; i<pad[next].length; i++){
//set,overwrite next cell of array with iterated alphabet
alpha[next] = pad[next][i];
if (i<num.length-1)
//process next next digit
getAlpha(num, next++, alpha);
else
//if end of number
//append array to horrendously long list
combinations.add(stringify(alpha));
}
}

public void getAlpha(int[] num){
getAlpha(num, 0, new char[num.length]);
}
}

关于java - 如何将电话号码中的字符串关联打印为文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com