【问题标题】:Get all possible combinations of characters in an array获取数组中所有可能的字符组合
【发布时间】:2012-03-20 06:33:46
【问题描述】:

我有一个字符数组 c[][] 与每个索引的不同映射。 例如:

{'a', 'b', 'c', 'd', 'e', 'f' } {'g', 'h', 'i' }

我需要将此数组的所有可能的字符组合作为字符串返回。 这意味着,对于上述字符数组,我应该返回: “ag”、“ah”、“ai”、“bg”、“bh”、“bi”、“cg”、“ch”、“ci”等。 对于像上面这样只有两件事的字符数组很容易做到这一点,但是如果有更多的数组,那么我不知道该怎么做...... 这就是我要求你们所有人帮助我的事情! :)

【问题讨论】:

标签: java arrays combinations character


【解决方案1】:

对于两个数组,应该使用两个嵌套循环:

for (int i = 0 ; i != c[0].length ; i++) {
    for (int j = 0 ; j != c[1].length ; j++) {
        System.out.writeln(""+c[0][i]+c[1][j]);
    }
}

对于更多嵌套,您需要递归或等效的基于堆栈的解决方案。

void combos(int pos, char[][] c, String soFar) {
    if (pos == c.length) {
         System.out.writeln(soFar);
         return;
    }
    for (int i = 0 ; i != c[pos].length ; i++) {
        combos(pos+1, c, soFar + c[pos][i]);
    }
}

像这样从main() 调用这个递归函数:

combos(0, c, "");

【讨论】:

  • 啊,我应该意识到这一点。 :p 感谢您的帮助!非常好的代码。
  • @Supervisor 不客气!如果答案对您有用,请考虑 accepting it 表明问题已解决,并在 Stack Overflow 上为自己赢得一个全新的徽章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多