常规题,先校验长度,不符合则直接输出;符合则判断是否为最后一个字符,是则直接new对象输出,不是则交换begin和i位置的数字,再用递归输出。
public class Test28{
// 先校验
public static void permutation(char[] chars){
if (chars.length<1 || chars==null){
return;
}
permutation(chars,0);
}
public static void permutation(char[] chars,int begin){
//如果是最后一个字符
if (chars.length-1 == begin){
new String(chars);
System.out.println(new String(chars));
}else {
char tmp;
for (int i = begin;i<chars.length;i++){
tmp = chars[begin];
chars[begin] = chars[i];
chars[i] = tmp;
permutation(chars,begin+1);
}
}
}
public static void main(String[] args) {
char[] c1 = {'a', 'b', 'c'};
permutation(c1);
char[] c2 = {'a', 'b', 'c','d'};
permutation(c2,2);
}
}