字符串的排列
字符串的排列
http://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7
暴力迭代,第n个字符及前面的字符形成的字符串的全排列要先计算第n-1个字符及前面字符形成的字符串的全排列
public ArrayList<String> Permutation(String str) {
ArrayList<String> res=new ArrayList<>();
if(str==null || str.length()==0){
return res;
}
char [] chars=str.toCharArray();
ArrayList<String> tmp1=new ArrayList<>();
ArrayList<String> tmp2=new ArrayList<>();
for(int i=0;i<chars.length;i++){
if(i==0){
tmp1.add(new String(chars[i]+""));
}else{
for(int k=0;k<tmp1.size();k++){
String strTmp=tmp1.get(k);
String midStr=null;
for(int j=0;j<strTmp.length()+1;j++){
midStr=strTmp.substring(0,j)+chars[i]+strTmp.substring(j);
if(!tmp2.contains(midStr)){
tmp2.add(midStr);
}
}
}
tmp1=new ArrayList(tmp2);
tmp2.clear();
}
}
res=tmp1;
Collections.sort(res);
return res;
}
智元机器人成长空间 262人发布