Hier ist ein Beispiel für das Erzeugen aller Sequenzen für beliebige Zeichen in beliebiger Länge:
%Vor%Dies dauert ungefähr 250 ms auf meinem Rechner, um alle 11.881.376 Sequenzen zu durchlaufen.
Beachten Sie, dass ein neues char[len]
nur einmal am Anfang erstellt und als Build zum Erstellen der Permutationen wiederverwendet wird. Der erste Aufruf von iterate()
beginnt mit einem pos
von 0
. Springen Sie zu der for-Schleife, wo sie sich durch die einzelnen Zeichen bewegt. Der erste Char des Builds wird auf diesen Wert gesetzt, und dann rufen wir rekursiv dieselbe Methode auf, um den nächsten auf pos + 1
zu setzen. Sobald dies 5 Mal passiert ist, wird die Position bei len
sein. Dies ist der Fall, wenn pos == len
am Anfang der Methode eintritt. Dann baut es nur ein String
von dem auf, was im Build aufgebaut ist und da ist dein Wort.
Dies kann auch ohne Rekursion (hier in C) einfach gemacht werden.
%Vor%oder Sie können es mit tragen:
%Vor%Hier ist ein Algorithmus, den Sie im Pseudocode ausprobieren können:
%Vor%Sie sollten in der Lage sein, diesen Pseudocode einfach in den richtigen Java-Code zu übersetzen. Das einzige knifflige Bit ist die zufällige Zeichenfolge zu generieren. Du könntest dein Array von Buchstaben nehmen, einen zufälligen Wert zwischen 1 und 26 wählen und dann diesen für einen Buchstaben verwenden. Wiederholen Sie das fünf Mal, und Sie haben eine Zeichenfolge mit fünf Buchstaben!
Ob dies ein "guter" oder "schneller" Algorithmus ist, bleibt Ihnen überlassen. Sie haben nicht definiert, was "gut" oder "schnell" bedeutet, also kann ich nicht beurteilen. Sie haben möglicherweise andere Kriterien als ich.
Beachten Sie, dass dadurch alle Zeichenfolgen generiert werden, die fünf Buchstaben enthalten. Das werden wahrscheinlich keine Worte sein. Ausgehend von Ihrem Beispielcode möchten Sie alle Zeichenfolgen, die fünf Buchstaben enthalten, nicht Wörter mit fünf Buchstaben.