Java实现控制台输入一个字符串,输出它的所有全排列。无控制台输入-2分。 示例: 输入:"abc" 输出:["abc", "acb", "bac", "bca", "cab", "cba"]
时间: 2024-09-28 07:05:00 浏览: 29
js代码-js将数组转换为字符串
在Java中,可以使用递归的方式来生成字符串的所有全排列。这里有一个简单的示例代码片段,它使用了回溯算法来完成这个任务:
```java
import java.util.ArrayList;
import java.util.Arrays;
public class StringPermutations {
public static void main(String[] args) {
String input = "abc";
ArrayList<String> permutations = generatePermutations(input);
for (String permutation : permutations) {
System.out.println(permutation);
}
}
// 生成字符串的全排列
private static ArrayList<String> generatePermutations(String str) {
if (str.isEmpty()) {
return new ArrayList<>(Arrays.asList(""));
} else {
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < str.length(); i++) {
char firstChar = str.charAt(i);
// 删除第一个字符
String remainingChars = str.substring(0, i) + str.substring(i + 1);
// 对剩余字符进行全排列,并将结果的每个元素加上第一个字符
for (String perm : generatePermutations(remainingChars)) {
result.add(firstChar + perm);
}
}
return result;
}
}
}
```
在这个例子中,`generatePermutations`函数接收一个字符串,如果字符串为空,则返回只包含空字符串的列表。否则,对于每个字符,我们将其从原字符串中移除,并对剩下的部分再次调用该函数。然后将移除的第一个字符添加到每次得到的排列的开始位置,最终形成完整的排列。
阅读全文