您的位置:首页 > 其它

9.9递归和动态规划(五)——确定某字符串的所有排列组合

2015-08-11 17:45 141 查看
/**

* 功能:确定某字符串的所有排列组合。

*/

注意:不考虑重复字符。若考虑重复字符,只需在加入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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: