[英]Generating all permutative pairs of strings iteratively in Java
我正在尝试编写一个函数,以便给定 n 个字符串,它生成所有n P 2
对这样的字符串。 例如,如果我有[ab, bc, bd]
,它会生成[[ab, bc], [bc, ab], [ab, bd], [bd, ab], [bc, bd], [bd, bc]]
,不一定按这个顺序。 我有一个凌乱的递归函数,这样做,
private static void permutation(ArrayList<String> names, int pos, String[] pair, ArrayList<ArrayList<String>> out) {
if (pos == names.size()) {
if(!names.get(0).equals(names.get(1))){
out.add(new ArrayList<String>(Arrays.asList(names.get(0), names.get(1))));
}
} else {
for (int i = 0 ; i < pair.length ; i++) {
names.add(pair[i]);
permutation(names, pos+1, pair, out);
}
}
}
但是当超过 6 个字符串时,这会产生一个stackoverflow error
。 任何人都可以帮助为此编写迭代方法吗?
你不需要递归函数; 两个嵌套循环就可以了。
基本上,循环i from 0 to n-1
以获取该对的第一个元素; 然后再次循环,将j from 0 to n-1, where i<>j
循环j from 0 to n-1, where i<>j
,并取对(i,j)
。 (并且显然将所有这些对都放在out
集合中。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.