Alle möglichen Wörter
Will ich schaffen, alle möglichen 5-Buchstaben-Wörter, die mit a-z.Bitte machen Sie alle eine gute und schnelle algorithmen.
Habe ich versucht zu erstellen und es wie folgt aussieht...
byte[] allchar=new byte[] {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int lengthOfAllChar=allchar.length;
System.out.println(lengthOfAllChar);
for (int i = 0; i < lengthOfAllChar; i++){
for(int j = 0; i < lengthOfAllChar; j++){
StringBuffer finalWordBuffer = new StringBuffer();
finalWordBuffer.append((char)allchar[i]);
finalWordBuffer.append((char)allchar[j]);
}
}
- wir reden 12M Worte. Viel Glück mit diesem schnellen Algorithmus 🙂
- Nein, ich habe eines erstellt.und es sieht wie folgt aus... for(int i=0;i<lengthOfAllChar;i++){ for(int j=0;i<lengthOfAllChar;j++){ StringBuffer finalWordBuffer=new StringBuffer(); finalWordBuffer.append((char)allchar[i]); finalWordBuffer.append((char)allchar[j]);}}
- Die Big-O-notation (O^5), und in Ihrem Fall = 11881376 Worte. Viel Glück!
- Einige Kontext könnte helfen. Welche Sprache (keine Programmiersprache!)? Warum sind Sie erzeugen Sie, anstatt Sie aus einem Wörterbuch? Ist diese Hausaufgaben, oder eine Zuordnung von einer Sorte?
- was sind die Regeln für deine Worte (z.B. nicht mehr als zwei aufeinanderfolgende Vokale)? Ich hoffe, es gibt hier einige, denn ansonsten ist dies ein sehr einfaches problem zu lösen.
- ich m unter Verwendung der java...
- re-Lesen Sie meinen Kommentar bitte nochmal. Ich habe ausdrücklich nicht Fragen der Programmiersprache, da diese information bereits in den tags Ihrer "Frage". Auch beantworten Sie bitte alle Fragen. Danke.
- Bearbeiten Sie Ihre Frage und fügen Sie den code, anstatt zu posten, als Kommentar. Vergessen Sie nicht, markieren Sie es als code.
- Regeln werden Hinzugefügt, nachdem ich einen schnellen und zuverlässigen Algorithmus...
- Wie schnell muss Sie sein? Ich schrieb gerade ein test-Programm, tun Sie es hier, und es erzeugt jede permutation (nicht die tatsächlichen Wörter) und schreibt diese in eine Datei die in 1,6 Sekunden auf meinem Rechner. Ich bin mir nicht sicher, dass diese ganzen Kommentare, dass es sehr langsam sind, dass genau.
- postest du es in den Antworten...
- Ich schrieb es in C, so dass ich don ' T glaube, es würde Ihnen helfen. Ich kann es posten, wenn Sie wollen, though.
- wenn Sie seine andere form, was ich verwende..u r welcome
- -1 Wählern, erklären Sie bitte, was ist falsch mit dieser Frage, glaube ich, es ist völlig berechtigte Frage, wir sind nicht hier, um zu lösen, blöde syntax-Fehler nur.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel für die Generierung aller Sequenzen, die für beliebige Zeichen in beliebiger Länge:
Diese dauert etwa 250ms auf meinem Rechner Durchlaufen alle 11,881,376 Sequenzen.
Beachten Sie, dass eine neue
char[len]
wird nur einmal am Anfang und wiederverwendet bauen für Gebäude der Permutationen. Der erste Aufrufiterate()
beginnt mit einempos
von0
. Springen Sie zu der for-Schleife, wo es eine Schleife durch die einzelnen chars. Der erste char des Bau-ist festzulegen, dass und dann werden wir rekursiv aufrufen die gleiche Methode, um den nächsten zupos + 1
. Sobald dies geschehen ist, 5 mal die pos werden beilen
. Dies ist, wenn diepos == len
kicks am Anfang der Methode. Dann baut einfach einString
aus, was aufgebaut wurde, in bauen, und es ist dein Wort.new char[len]
wird nur einmal am Anfang und wiederverwendetbuild
für die Erstellung der Permutationen. Der erste Aufrufiterate()
beginnt mit einempos
0. Springen Sie zu denfor
Schleife, wo es durchläuft jede vonchars
. Die erstenchar
vonbuild
ist festgelegt, dass und dann werden wir rekursiv aufrufen die gleiche Methode, um den nächsten zupos + 1
. Sobald dies geschehen ist, 5 mal diepos
werden beilen
. Dies ist, wenn diepos == len
kicks am Anfang der Methode. Dann baut einfach einString
aus, was aufgebaut wurde, inbuild
und es ist dein Wort.Dies kann leicht getan werden, auch ohne Rekursion (hier in C)
oder Sie können es mit tragen:
Hier ist der Java 7 version von antti.huima code.
Hier ist ein Algorithmus für die Sie ausprobieren können, in pseudocode:
Sollten Sie in der Lage sein leicht übersetzen diesen pseudocode in die korrekten Java-code. Der einzige trickreiche Teil ist die Generierung der Zufalls-string. Sie könnte Ihre Anordnung der Buchstaben, wähle einen zufälligen Wert zwischen 1 und 26, verwenden Sie dann für einen Brief. Wiederholen Sie fünf mal und Sie haben ein fünf-Buchstaben-string!
Ob oder nicht, das ist eine "gute" oder "fast" - Algorithmus ist bis zu Ihnen. Sie haben nicht definiert, was "gut" oder "schnell" bedeuten, so dass ich nicht in der Lage bin zu beurteilen. Sie können unterschiedliche Kriterien als ich.
Beachten Sie, dass dieser generiert alle Zeichenfolgen, die fünf Buchstaben in Ihnen. Diese wird es wohl nicht werden Worte. Ausgehend von deinem Beispiel-code, den Sie möchten, dass alle Zeichenfolgen, die fünf Buchstaben, nicht Wörter mit fünf Buchstaben in Ihnen.
for
loops garantieren, dass alle 'Worte' erstellt werden, ohne Duplikate.}
Hier ist Ihr Algorithmus