📅  最后修改于: 2023-12-03 15:36:35.203000             🧑  作者: Mango
在Java中,我们可以使用ArrayList来存储字符串的所有排列。排列是指从一组元素中取出一些元素(有序的),重新排列这些元素,生成新的组合。对于一个给定的字符串,我们需要找到其所有可能的排列,然后打印出来。
使用递归的方式来实现字符串的排列。具体的实现流程如下:
import java.util.ArrayList;
public class StringPermutation {
public static ArrayList<String> getPermutations(String str) {
ArrayList<String> permutations = new ArrayList<String>();
if (str == null || str.length() == 0) {
permutations.add("");
return permutations;
}
char first = str.charAt(0);
String rest = str.substring(1);
ArrayList<String> words = getPermutations(rest);
for (String word : words) {
for (int i = 0; i <= word.length(); i++) {
String permutation = insertCharAt(word, first, i);
permutations.add(permutation);
}
}
return permutations;
}
public static String insertCharAt(String word, char c, int index) {
String start = word.substring(0, index);
String end = word.substring(index);
return start + c + end;
}
}
下面的代码演示了如何使用上面的类来打印出"abc"的所有可能的排列:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> permutations = StringPermutation.getPermutations("abc");
for (String permutation : permutations) {
System.out.println(permutation);
}
}
}
输出结果:
abc
acb
bac
bca
cab
cba