📜  打印Java字符串的所有排列(1)

📅  最后修改于: 2023-12-03 14:54:27.311000             🧑  作者: Mango

打印Java字符串的所有排列

在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
以递归的方式打印Java字符串的所有排列

以下是一个方法,在调用上述方法的基础上,使用递归打印字符串的所有排列。该方法接受一个字符串和两个整数作为参数。其中,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字符串的所有排列的方法。