题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> array = new ArrayList<String>();
if(str==null||str.length()<=0){
return array;
}
charPermutation(array,str.toCharArray(),0);
Collections.sort(array);
return array;
}
public void charPermutation(ArrayList<String> array,char[] cc,int index){
if(index==cc.length-1){
array.add(new String(cc));
return ;
}
for(int i=index;i<cc.length;i++){
if(i==index||cc[index]!=cc[i]){
swap(cc,i,index);
charPermutation(array,cc,index+1);
swap(cc,i,index);
}
}
}
public void swap(char[] s,int i,int j){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}