生成给定字符串的所有排列

2022-08-31 04:29:54

找到字符串的所有排列的优雅方法是什么?例如,的排列将是 和 ,但是较长的字符串呢, 例如 ?有没有Java实现示例?babaababcdefgh


答案 1
public static void permutation(String str) { 
    permutation("", str); 
}

private static void permutation(String prefix, String str) {
    int n = str.length();
    if (n == 0) System.out.println(prefix);
    else {
        for (int i = 0; i < n; i++)
            permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
    }
}

(通过 Java 编程简介)


答案 2

使用递归。

  • 依次尝试每个字母作为第一个字母,然后使用递归调用查找其余字母的所有排列。
  • 基本情况是,当输入为空字符串时,唯一的排列是空字符串。