字符串-放回全排列

来源:互联网 发布:二手交易软件有什么 编辑:程序博客网 时间:2024/06/16 07:48

题目:求一个字符集合的放回全排列。
如:{a,b,c},输出结果为27种:

I/System.out: aaaI/System.out: aabI/System.out: aacI/System.out: abaI/System.out: abbI/System.out: abcI/System.out: acaI/System.out: acbI/System.out: accI/System.out: baaI/System.out: babI/System.out: bacI/System.out: bbaI/System.out: bbbI/System.out: bbcI/System.out: bcaI/System.out: bcbI/System.out: bccI/System.out: caaI/System.out: cabI/System.out: cacI/System.out: cbaI/System.out: cbbI/System.out: cbcI/System.out: ccaI/System.out: ccbI/System.out: ccc

参见:Java实现全排列、组合算法
Java代码实现为:

    /**     * 放回全排列     * 若干了个(char[]的长度)筛子的组合     */    public static char[] cs;    public void startRePerm(char[] str) {        cs = String.valueOf(str).toCharArray();        rePerm(str, 0);    }    private void rePerm(char[] str, int pos) {        if (pos == str.length - 1) {            for (int i = 0; i < str.length; i++) {                str[pos] = cs[i];                System.out.println(str);            }            return;        }        for (int i = 0; i < str.length; i++) {            str[pos] = cs[i];            rePerm(str, pos + 1);        }    }