Java 最简单方法 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。
时间: 2024-02-13 08:02:43 浏览: 84
可以使用 Java 中的 `nextPermutation` 方法来实现全排列,具体步骤如下:
1. 将字符串转换为字符数组;
2. 调用 `Arrays.sort` 方法对字符数组进行升序排序;
3. 循环调用 `nextPermutation` 方法,输出每个排列。
Java 代码如下:
```
public static void permutation(String str) {
char[] array = str.toCharArray();
Arrays.sort(array); // 先排序,使得字符串中的字母已经按照从小到大的顺序排列
do {
System.out.println(new String(array)); // 输出当前排列
} while (nextPermutation(array));
}
private static boolean nextPermutation(char[] array) {
int i = array.length - 2;
while (i >= 0 && array[i] >= array[i + 1]) {
i--;
}
if (i < 0) { // 已经是最后一个排列
return false;
}
int j = array.length - 1;
while (j > i && array[j] <= array[i]) {
j--;
}
swap(array, i, j);
reverse(array, i + 1, array.length - 1);
return true;
}
private static void swap(char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
private static void reverse(char[] array, int begin, int end) {
while (begin < end) {
swap(array, begin++, end--);
}
}
```
调用 `permutation("abc")` 可以得到输出:
```
abc
acb
bac
bca
cab
cba
```
阅读全文