获取数组中所有可能的字符组合
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:随机播放字符串中的字符以获取所有可能的字符串组合[重复]