📅  最后修改于: 2023-12-03 14:54:27.311000             🧑  作者: Mango
在Java中,我们可以使用递归来生成字符串的所有排列。首先,让我们看看如何使用递归生成一个字符串的所有排列。
以下是一个方法,它使用递归来生成字符串的所有排列。该方法接受一个字符串和两个整数作为参数。其中,i
表示当前处理的字符的索引,n
表示字符串的长度。
public static void permute(String str, int i, int n) {
if (i == n) {
System.out.println(str);
return;
}
for (int j = i; j <= n; j++) {
str = swap(str, i, j);
permute(str, i+1, n);
str = swap(str, i, j);
}
}
public static String swap(String str, int i, int j) {
char[] charArray = str.toCharArray();
char temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);
}
调用此permute
方法并传递字符串及其长度作为参数将生成字符串的所有排列。
String str = "abc";
int n = str.length();
permute(str, 0, n-1);
输出:
abc
acb
bac
bca
cba
cab
以下是一个方法,在调用上述方法的基础上,使用递归打印字符串的所有排列。该方法接受一个字符串和两个整数作为参数。其中,i
表示当前处理的字符的索引,n
表示字符串的长度。
public static void printPermutations(String str, int i, int n) {
if (i == n) {
System.out.println(str);
return;
}
for (int j = i; j <= n; j++) {
str = swap(str, i, j);
printPermutations(str, i+1, n);
str = swap(str, i, j);
}
}
调用此printPermutations
方法并传递字符串及其长度作为参数将打印字符串的所有排列。
String str = "abc";
int n = str.length();
printPermutations(str, 0, n-1);
输出:
abc
acb
bac
bca
cba
cab
以上就是以递归的方式打印Java字符串的所有排列的方法。