码迷,mamicode.com
首页 > 其他好文 > 详细

有重复字符串全排列

时间:2017-05-31 17:30:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:collect   java   port   array   code   style   title   abc   rar   

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 
import java.util.*;

public class Solution {
    public static ArrayList<String> Permutation(String str) {
        if(str == null)
            return null;
        ArrayList<String> list = new ArrayList<>();
        char[] chars = str.toCharArray();
        list = allSort(chars, 0, list);
        Collections.sort(list);
        return list;
    }

    public static ArrayList<String> allSort(char[] chars, int index, ArrayList<String> list){
        if(index == chars.length-1){
            list.add(String.valueOf(chars));
            return list;
        }
        for(int i=index; i< chars.length; i++){
            if(i != index && chars[i] == chars[index])//当要交换的值相同时
                continue;
            exChangeChars(index, i, chars); //修改第一个与后面的位置
            allSort(chars,index+1,list);
            exChangeChars(index, i, chars);//修改成原来的数组
        }

        return list;
    }
    /**
     * 交换两个字符数组的位置
     * @param index1
     * @param index2
     * @param chars
     */
    public static void exChangeChars(int index1, int index2, char[] chars){
        char tmp =chars[index1];
        chars[index1] = chars[index2];
        chars[index2] = tmp;
    }
}

 

有重复字符串全排列

标签:collect   java   port   array   code   style   title   abc   rar   

原文地址:http://www.cnblogs.com/huangyichun/p/6924948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!