算法 字符串的排列组合
package ACM;
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution13 {
public ArrayList<String> Permu(String str){
ArrayList<String> result = new ArrayList<String>();
if (str==null || str.length()==0){
return result;
}
char[] chars = str.toCharArray();
TreeSet<String> temp = new TreeSet<>();
Permu(chars,0,temp);
result.addAll(temp);
return result;
}
public void Permu(char[]chars, int begin, TreeSet<String> result){
if(chars==null || chars.length==0|| begin<0 ||begin>chars.length-1){return;}
if(begin==chars.length-1){
result.add(String.valueOf(chars));
}else {
for(int i = begin; i<chars.length-1; i++){
swap(chars,begin,i);
Permu(chars,begin+1,result);
swap(chars,begin,i);
}
}
}
public void swap(char[] x, int a, int b){
char t = x[a];
x[a]=x[b];
x[b]=t;
}
public static void main(String[] args){
String s = "adsgf";
Solution13 s1 = new Solution13();
System.out.println(s1.Permu(s));
}
}