【问题标题】:Generating all permutative pairs of strings iteratively in Java在 Java 中迭代地生成所有置换字符串对
【发布时间】: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


    【解决方案1】:

    你不需要递归函数;两个嵌套循环就可以了。

    基本上,循环i from 0 to n-1 以获取该对的第一个元素;然后再次循环,循环 j from 0 to n-1, where i&lt;&gt;j ,并取对 (i,j)。 (显然将所有这些对放在out 集合中。)

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 2020-08-18
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多