主题:帮忙解释一下
这个程序实现字母的全排列,比如输入abc,输出为 abc,acb,bac,bca,cba,cab ,有点不太明白,
static List arrange(String s){
if ((s==null)||(s.length()==0)) throw new IllegalArgumentException();
int len=s.length();
List list=new ArrayList();
if(len==1) {
list.add(s);
return list;
}
char c=s.charAt(0);
List temp=arrange(s.substring(1));
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<temp.size();i++){
for(int j=0;j<len;j++){
sb.setLength(0);
sb.append((String)temp.get(i));
sb.insert(j,c);
list.add(sb.toString());
}
}
return list;
}
static List arrange(String s){
if ((s==null)||(s.length()==0)) throw new IllegalArgumentException();
int len=s.length();
List list=new ArrayList();
if(len==1) {
list.add(s);
return list;
}
char c=s.charAt(0);
List temp=arrange(s.substring(1));
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<temp.size();i++){
for(int j=0;j<len;j++){
sb.setLength(0);
sb.append((String)temp.get(i));
sb.insert(j,c);
list.add(sb.toString());
}
}
return list;
}