题目:输出abc的所有可能情况
ps:这个好难懂 先递归完,然后在进行for循环
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static ArrayList<String> res = new ArrayList<>();
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(f1(str));
}
public static ArrayList<String> f1(String A){
char arr[] = A.toCharArray();
Arrays.sort(arr);
f2(arr,0);
return res;
}
//全排列就是从第一个数字起每个数分别与它后面的数字交换
public static void f2(char arr[],int k) {
if(k==arr.length) {
res.add(new String(arr));
}
//for就是为了把后面的b,c与A交换到第一位
for(int i=k;i<arr.length;i++) {
swap(arr,k,i); //把后面每个字符放到k位
f2(arr,k+1); //然后在排k后面的每一位
swap(arr,k,i); //回溯恢复
}
}
public static void swap(char arr[],int i,int j) {
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}