题目:输入ABC
输出ABC ACB BAC BCA CAB CBA
思路:1.递归排列
2.字母顺序
3.去重
import java.util.ArrayList;
import java.util.Collections;
public class StringSort {
public ArrayList<String> Permutation(String str) {
ArrayList<String> list=new ArrayList<String>();
if(str==null || str.length()<=0) {
return list;
}
char[] chs=str.toCharArray();
PermutationHelper(chs,0,list);
Collections.sort(list);
return list;
}
private void PermutationHelper(char[] chs, int i, ArrayList<String> list) {
if(i==chs.length-1) {
String res=String.valueOf(chs);
// System.out.print(res+" ");
if(!list.contains(res)) {
list.add(res);
return;
}
}
for(int j=i;j<chs.length;j++) {
swap(chs,i,j);
PermutationHelper(chs,i+1,list);
swap(chs,i,j);
}
}
private void swap(char[] chs, int i, int j) {
char temp=chs[i];
chs[i]=chs[j];
chs[j]=temp;
}
public static void main(String[] args) {
StringSort ss=new StringSort();
ArrayList<String> list=ss.Permutation("ABC");
System.out.println();
System.out.println(list);
}
}