题解 | #全排列#
全排列
https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\n");
while (scanner.hasNext()) {
ArrayList<String> arrayList = new ArrayList<>();
String S = scanner.next();
dfs(0, S.toCharArray(), arrayList);
Collections.sort(arrayList);
arrayList.forEach(System.out::println);
}
}
public static void dfs(int i, char[] nums, ArrayList<String> list) {
if (i == nums.length) {
String s = Arrays.toString(nums);
String replace = s.replace("[", "").replace("]", "").replaceAll(" ",
"").replaceAll(",", "");
list.add(replace);
return;
}
boolean[] visited = new boolean[10];
for (int j = i; j < nums.length; j++) {
if (!visited[nums[j] - 'a']) {
visited[nums[j] - 'a'] = true;
swap2(nums, i, j);
dfs(i + 1, nums, list);
swap2(nums, i, j);
}
}
}
public static void swap2(char[] nums, int i, int j) {
char T = nums[i];
nums[i] = nums[j];
nums[j] = T;
}
}

