问题描述:
一组字符串的全排列,按照全排列的顺序输出,
并且每行结尾无空格。
输入:
输入一个字符串
输入示例:
请输入全排列的字符串:
abc
输出示例:
a b c
a c b
b a c
b c a
c b a
c a b
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s1 = scanner.nextLine(); // 输入字符串
char[] num = s1.toCharArray(); // 转换字符数组
Full_Permutation(num, 0); // 调用方法
}
public static void Full_Permutation(char arr[], int n) { // 确认某个排列的第k位
if (n == arr.length) { // 全部确认
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " "); // 输出
}
System.out.println(); // 换行
}
for (int i = n; i < arr.length; i++) { // 选定第k位
char temp = arr[i]; // 将第i位和第k位交换
arr[i] = arr[n];
arr[n] = temp;
Full_Permutation(arr, n + 1); // 移交下一层确认k+1位
temp = arr[i]; // 回溯
arr[i] = arr[n];
arr[n] = temp;
}
}
}