Angenommen, wir haben ein Alphabet "abcdefghiklimnop". Wie kann ich rekursiv Permutationen mit Wiederholung dieses Alphabets in Gruppen von FIVE effizient erzeugen?Generieren aller Permutationen einer bestimmten Länge
Ich habe mit diesen ein paar Tagen jetzt gekämpft. Jede Rückmeldung wäre hilfreich.
Das ist im Wesentlichen die gleiche wie: Generating all permutations of a given string
Allerdings habe ich nur die Permutationen in Längen von fünf des gesamten String will. Und ich konnte das nicht herausfinden.
SO für alle Teilstrings der Länge 5 von "abcdefghiklimnop", finden Sie die Permutationen der Teilkette. Zum Beispiel, wenn die Teilzeichenfolge abcdef wäre, würde ich alle Permutationen davon wollen, oder wenn die Teilzeichenfolge defli wäre, würde ich alle Permutationen dieser Teilzeichenfolge wollen. Der Code unten gibt mir alle Permutationen eines Strings, aber ich würde gerne alle Permutationen aller Teilstrings der Größe 5 eines Strings finden.
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));
}
}
Kannst du sie nicht alle generieren, dann über alle Schleifen und nimmst die ersten 5 Zeichen? –
@ cricket_007 Dies würde viele Wiederholungen erzeugen. Außerdem bittet OP um eine effiziente Möglichkeit, sie alle zu generieren. – dasblinkenlight
@dasblinkenlight - Ah, verpasste das Wort "effizient" –