思路:
把第一个字符和后面所有字符交换
固定第一个字符,求后面所有字符排列
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> result=new ArrayList<>();
if(str==null || str.length()>9 || str.length()==0)
return result;
Select(str.toCharArray(),0,result);
Collections.sort(result);
return result;
}
public static void Select(char[] ch,int begin,ArrayList<String> result)
{
if(begin==ch.length)
result.add(new String(ch));
else{
for(int i=begin;i<ch.length;i++)
{
if(i!=begin && ch[i]==ch[begin])
continue;
char temp=ch[begin];
ch[begin]=ch[i];
ch[i]=temp;
Select(ch,begin+1,result);
temp=ch[begin];
ch[begin]=ch[i];
ch[i]=temp;
}
}
}
}