繁体   English   中英

在 Java 中迭代生成所有置换字符串对

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM