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

标签 java algorithm recursion

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

您知道 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/

相关文章:

algorithm - 监督机器学习,产生训练有素的估计器

java.util.NoSuchElementException - 扫描仪读取用户输入

java - 如何将一个对象克隆为Object类的对象?

java - 如何在 Eclipse IDE 中调试 Drools 文件 (.drl)

database - 什么是 Hi/Lo 算法?

c# - 升序排列

java - 使用方法重载时程序中的额外输出

sql - SQL复制与空值

javascript - 计算对象的所有属性

c++ - 模板互递归