排列(长度为n的字符串所有组成情况)--java实现

来源:互联网 发布:百度世界人工智能大会 编辑:程序博客网 时间:2024/05/21 14:57

递归方法代码实现:

/**     * 全排列     * @param input     * @return     */    public static List<String> FullPermutation(String input){        List<String> list = new ArrayList<String>();        StringBuffer tmp = new StringBuffer();        for (int i = 0; i < input.length(); i++) {            RecursiveMethod(input, i, tmp);        }        return list;    }    /**     * 递归获取全排列所有可能     * @param inStr     * @param pos     * @param parentData     */    public static void RecursiveMethod(String inStr,int pos,StringBuffer parentData){        StringBuffer res = new StringBuffer();        res.append(parentData);        res.append(inStr.charAt(pos));        inStr = deleteElement(inStr, pos);        if (inStr.length() == 0) {            System.out.println(res.toString());            return;        }        for (int i = 0; i < inStr.length(); i++) {            RecursiveMethod(inStr, i, res);        }    }    /**     * 删除已经添加过的字符     * @param inStr     * @param pos     * @return     */    public static String deleteElement(String inStr,int pos){        StringBuffer outStr = new StringBuffer();        if (inStr != null) {            for (int i = 0; i < inStr.length(); i++) {                if (i != pos) {                    outStr.append(inStr.charAt(i));                }            }        }        return outStr.toString();    }    public static void main(String[] args) {        String inStr = "abcdefg";        for (int i = 0; i < inStr.length(); i++) {            FullPermutation(inStr);        }    }
2 0
原创粉丝点击