输入一个字符串,按字典序打印出该字符串中字符的所有排列
public static List<String> permutation4(String input){
List<String> result = new ArrayList<>();
if (input == null){
return result;
}
if(input.length() == 1){
result.add(input);
return result;
}
for(int i = 0;i<input.length();i++){
//获取第一个元素
char first= input.charAt(i);
System.out.println("first:"+first);
//获取除第一个元素外的其他元素
String end = input.substring(0,i)+input.substring(i+1);
System.out.println("end:"+end);
//迭代,获取不同的排列组合
List<String> restPerms = permutation4(end);
for(String param :restPerms){
System.out.println("param:"+param);
result.add(first+param);
}
}
return result;
}
first:a
end:bc
first:b
end:c
param:c
first:c
end:b
param:b
param:bc
param:cb
first:b
end:ac
first:a
end:c
param:c
first:c
end:a
param:a
param:ac
param:ca
first:c
end:ab
first:a
end:b
param:b
first:b
end:a
param:a
param:ab
param:ba
[abc, acb, bac, bca, cab, cba]