Java中的全排列
import java.util.HashSet;
public class one{
public static void main(String[] args){
String a= "ABC";
//用HashSet集合 排除重复元素
HashSet<String> set = new HashSet<>();
//创建一个函数 (set 下标 , 数组长度, 字符串转为字符数组),因为是单个字符交换所以用数组。
F1(set,0,a.length()-1,a.toCharArray());
System.out.println(set.toString());
}
private static void F1(HashSet<String> set, int from, int to, char[] arr) {
// TODO Auto-generated method stub
if(from==to) //只有一个的时候停止
set.add(new String(arr));
for(int i = from;i<=to;i++){
swap(arr,i,from);
F1(set,from+1,to,arr); //递归 ,自身调用
swap(arr,i,from);
}
}
private static void swap(char[] arr, int i, int from) {
// swap函数对于数组中的元素调换
char temp = arr[i];
arr[i]=arr[from];
arr[from]=temp;
}
}
结果