【发布时间】:2019-12-14 19:47:05
【问题描述】:
我正在尝试编写一个函数,这样给定 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。任何人都可以为此编写迭代方法吗?
【问题讨论】:
标签: java iteration permutation