生成给定长度的ArrayList <string>的所有排列

时间:2016-06-16 10:01:56

标签: java algorithm

我正在尝试创建一个算法,其中方法接受ArrayList并指定输出的长度。该方法的工作是打印指定arraylist的项目的所有可能的排列。例如,如果arraylist是1,2并且给定的长度是3,那么它应该给出输出为 112,122,121,212

2 个答案:

答案 0 :(得分:2)

可以通过递归地将所有可能的字符添加到现有结果来构建结果,直到达到所希望的长度。你从空结果开始。 这个算法非常简单:

public static void main(String... arg) {
    int n = 2;
    int l = 3;

    List<String> a = new ArrayList<>();
    for (int i = 0; i < n; i++) {
        a.add(Integer.toString(i+1));
    }
    perm(a, "", l);
}

private static void perm(List<String> a, String result, int l) {
    if (result.length() == l) {
        System.out.println(result);
        return;
    }
    for (int i = 0; i < a.size(); i++) {
        String nr = result + a.get(i);
        perm(a, nr,l );
    }
}

输出:

111
112
121
122
211
212
221
222

答案 1 :(得分:0)

尝试这里给出的解决方案(包括评论部分中的解决方案)

http://www.geeksforgeeks.org/print-all-combinations-of-given-length/