2016-05-23 2 views
-1

Ich habe versucht, den besten Weg, um herauszufinden, dieses Problem zu lösen.Wie kann ich überprüfen, ob ein Wort im Wörterbuch ist der Input des Benutzers, die in das Array eingefügt

Das Problem Im stecken ist, wo ich die Benutzereingabe (Wort) nehmen und es in das Array und versuchen, bestätigen/überprüfen, ob alle Buchstaben, die sie verwenden, sind in der Char-Array (generiert 10 zufällig Buchstaben) (letterpool), dann überprüfen Sie noch einmal, ob das verwendete Wort aus dem Wörterbuch gültig ist.

Ich habe ein Wörterbuch „dict.txt“, die Wörterbuch in Klein 80k Wörter enthält. Ich brauche irgendwie die Eingabe (Großbuchstaben) und in der Lage, das Wort des Wörterbuchs in Kleinbuchstaben zu finden

Ich hoffe, Sie können mir helfen, Programmiersprache Java Vielen Dank im Voraus!

Eric

+2

Bitte zuerst selbst versuchen und dann mit einer bestimmten Frage kommen. –

+0

Bitte fügen Sie Ihren Code zu Ihrer Frage hinzu. Wir helfen Ihnen dann gerne weiter. – TDG

+0

@TDG der Code ist jetzt in der Frage. vielen Dank, ive in wenigen Wochen und ohne Glück – Eric

Antwort

0

würde ich ein HashMap<Character, Integer> und legt die zufälligen Buchstaben in der Karte erstellen.

map.put(letter, 0); 

Dann würde ich durch die Buchstaben aus dem Wort gehen und tun dies

Integer value = map.get(letterFromYourWord); 
if(value == null){ 
    //raise exception because the letter from your word is not in your random array 
} else { 
    // increment the value from the map 
    map.put(letterFromYourWord, value++); 
} 

dann durch die Karte gehen und überprüfen, ob die Werte nicht 0 sind Wenn es einen mit dem Wert 0 ist, dann Ihr Wort wird nicht in Ihrem zufälligen Array verwendet.

mit dieser Implementierung Sie leicht mehr Funktionalitäten erweitern können, wie die Buchstaben zu zählen, die in ihrem Wort verwendet werden ...

0

Für die validWord Funktion würde ich für sortierte Arrays unter Verwendung der binären Suche vor. Etwas in diese Richtung:

static boolean validWord(String word, final char[] letters) 
    { 
     char[] lettersCopy = letters.clone(); 
     Arrays.sort(lettersCopy); // sort so we can use binary search   
     for(char c : word.toCharArray()) 
     { 
      if(Arrays.binarySearch(lettersCopy, c) < 0) //char c from word not in letterPool? 
      { 
       return false; 
      } 
     } 
     return true;  
    } 

Dann in Ihrer TRIALS Schleife Sie würde es nur nennen wie folgt aus:

  if (validWord(input,letterPool)) 
      { 
       System.out.println("Yes, the letters match");  
      }else { 
       System.out.println("No"); 
      } 

Ich bin nicht sicher, welche Dictionary-Klasse Sie es verwenden, so dass ich Ihnen nicht helfen können .

Btw: Arctigors Antwort mit hashmaps ist mehr CPU-Leistung noch schwerer auf der Speicherseite. (O (n) anstelle von O (n * lb (m)))

+0

Danke Mann. über das Wörterbuch, es ist auf einer anderen Klasse, aber ich habe ein String-Array (public String [] words = null;) Ich muss dies zu der Hauptklasse erben zu validieren, wenn ein Wort im Wörterbuch ist – Eric

Verwandte Themen