获取数组中所有可能的字符组合

Posted

技术标签:

【中文标题】获取数组中所有可能的字符组合【英文标题】: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”等。 对于像上面这样只有两件事的字符数组很容易做到这一点,但是如果有更多的数组,那么我不知道该怎么做...... 这就是我要求你们所有人帮助我的事情! :)

【问题讨论】:

签出***.com/questions/2920315/permutation-of-array 数组的深度是多少?也就是多少维? 【参考方案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 上为自己赢得一个全新的徽章。

以上是关于获取数组中所有可能的字符组合的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript 将两个数组的所有可能组合作为数组数组获取

如何从多个数组中获取所有组合?

python:随机播放字符串中的字符以获取所有可能的字符串组合[重复]

获取可能的数组组合

获取字符串或组合的所有可能排列,包括 Java 中的重复字符

获取数组的所有组合(如果我将它们一一删除)[重复]