【问题标题】:Creating permutations of n size创建 n 大小的排列
【发布时间】:2020-01-20 15:21:49
【问题描述】:

我目前正在尝试创建一个方法,该方法将接受一个字符串和一个数字,然后将打印字符串的所有排列,即数字的大小。例如, permutation("barn", 3) 将打印 "bar"、"rab"、"arn" 等等。到目前为止,我有这个方法可以正确打印字符串的所有排列:

public 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 permutation


【解决方案1】:

您只需在方法中添加一个长度参数,并在达到该长度后打印前缀:

public static void permutation(String prefix, String str, int len) {
    int n = str.length();
    if (prefix.length() == len) {
        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), len);
    }
}

现在,如果你执行

permutation("","barn",3);

你得到:

bar
ban
bra
brn
bna
bnr
abr
abn
arb
arn
anb
anr
rba
rbn
rab
ran
rnb
rna
nba
nbr
nab
nar
nrb
nra

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多