Создание перестановок n размера - PullRequest
3 голосов
/ 20 января 2020

В настоящее время я пытаюсь создать метод, который будет принимать строку и число, а затем печатать все перестановки строки, соответствующие размеру числа. Например, перестановка («сарай», 3) будет печатать «бар», «раб», «арн» и так далее. Пока у меня есть этот метод, который правильно печатает все перестановки строки:

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));
}

Теперь мне просто нужно реализовать функцию, которая ограничивает размер каждой перестановки, но я теряюсь, что делать , Любая помощь будет оценена!

1 Ответ

4 голосов
/ 20 января 2020

Вам просто нужно добавить параметр длины в метод и распечатать префикс, как только он достигнет этой длины:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...