http://blog.csdn.net/yhyr_ycy/article/details/52523243
public static void main(String[] args) {
String str ="abcd";
char[] cs = str.toCharArray();
ArrayList<Character> as = new ArrayList<>();
for(int i=0; i<cs.length; i++){
as.add(cs[i]);
}
for(int i=1; i <= as.size(); i++){ // 1~N个的全排列
ArrayList<Character> ta = new ArrayList<Character>();
permutation(as, ta,i);
}
}
//K: k Characters to permutation
static void permutation(ArrayList<Character> from, ArrayList<Character> to, int k){
ArrayList<Character> copyFrom;
ArrayList<Character> copyTo;
if(to.size() == k) { //一个/两...个元素排序时,遍历并输出
for(Character i : to) {
System.out.print(i);
}
System.out.println();
}
for(int i=0; i<from.size(); i++) {
copyFrom = new ArrayList<Character>(from);
copyTo = new ArrayList<Character>(to);
copyTo.add(copyFrom.get(i));
copyFrom.remove(i);
permutation(copyFrom, copyTo,k);
}
}