/**
* 功能:确定某字符串的全部排列组合。
* 功能:确定某字符串的全部排列组合。
*/
注意:不考虑反复字符。若考虑反复字符,仅仅需在增加permulations时去掉反复的字符串就可以。
/**
* 思路:元素由少到多,将新的元素塞进全部字符串中间的随意可能位置。
* @param str
* @return
*/
public static ArrayList<String> getPerms(String str){
if(str==null)
return null;
ArrayList<String> permutations=new ArrayList<String>();
if(str.length()==0){
permutations.add("");
return permutations;
}
char first=str.charAt(0);
String remainder=str.substring(1);
ArrayList<String> words=getPerms(remainder);
for(String word:words){
for(int i=0;i<=word.length();i++){
String s=insertCharAt(word, first, i);
permutations.add(s);
}
}
return permutations;
}
public static String insertCharAt(String word,char c,int i){
String start=word.substring(0, i);
String end=word.substring(i);
return start+c+end;
}