Java 编程 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。
时间: 2024-02-13 10:02:42 浏览: 138
可以使用递归来实现全排列,具体步骤如下:
1. 基线条件:如果字符串长度为1,则直接返回该字符串;
2. 对于长度大于1的字符串,取出第一个字符,对剩余的字符串进行全排列;
3. 将第一个字符依次插入到剩余字符串的任意位置,得到新的全排列。
Java 代码如下:
```
public static void permutation(String str) {
permutationHelper(str.toCharArray(), 0);
}
private static void permutationHelper(char[] array, int begin) {
if (begin == array.length - 1) { // 基线条件
System.out.println(new String(array));
return;
}
// 对剩余字符串进行全排列
permutationHelper(array, begin + 1);
// 将第一个字符依次插入到剩余字符串的任意位置,得到新的全排列
for (int i = begin + 1; i < array.length; i++) {
if (array[i] == array[begin]) {
continue;
}
swap(array, begin, i);
permutationHelper(array, begin + 1);
swap(array, begin, i);
}
}
private static void swap(char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
```
调用 `permutation("abc")` 可以得到输出:
```
abc
acb
bac
bca
cab
cba
```
阅读全文