2017-06-18 5 views
0

ich Schleife durch eine Wörterbuch-Datei wünschen und finden Worte, die nur die angegebenen Zeichen enthaltenWie kann ich Worte finden, die nur aus dem vorgegebenen Satz von Zeichen innerhalb des Wortes bestehen

Beispiel dgo, die die Buchstaben enthält " d“,‚o‘und‚g‘

gehen, Hund und Gottam gesetzt würde = true, wie sie mit so vielen Zeichen Buchstaben aus dem ursprünglichen Wort verwenden, wie das ursprüngliche Wort hat .

doog, gut, dogo würde halten am = false, da sie alle einen Brief aus dem ursprünglichen Wort enthalten, die mehr als einmal verwendet worden ist.

"Doog" verwendet zweimal "o". "Gut" verwendet zweimal "o". "Goddd" verwendet "d" dreimal.

Was würde ich mit der if-Schleife ändern zu berücksichtigen, wenn ein Zeichen mehr als wie oft verwendet wird, es

in der ursprünglichen Zeichenfolge erscheint
public boolean goodWord(String test){ 

     //Test to see if characters are in the original word 

     boolean ans =false; 

     String checker = "[" + test+ "]*"); //Problem with this line 

     if (test.matches(checker)) { 
      ans = true; 
     } 

} 
+3

Ihre qu Es fehlt eine klare Problembeschreibung. Also lesen [mcve] und vielleicht https://meta.stackoverflow.com/questions/284236/why-is-can-someon-help-me-not-an-actual-question ... Sie sagen nicht zum Beispiel was ** Tippe ** deine * dict * Variable hat! – GhostCat

+0

Die Frage ist vollkommen klar. So wird es mit einer einzigen Regex [^ (? = (?: (.) ​​(?!. *? \ 1)) + $) (? =. * D) (? =. * O) (? =. * g) \ [Hund \] {3} $] (https://regex101.com/r/gC3hd7/1) Es wäre schön, dies wieder zu öffnen, um die Technik richtig zu erklären. An all jene, die für das Schließen gestimmt haben - Es zeigt Ignoranz, etwas zu schließen, nur weil du nicht weißt, wie du es lösen kannst._ Gib jemandem die Chance, dir zu zeigen, wie es geht, du könntest etwas lernen. – sln

+0

Wie würde ich das tun, wenn ich einen String-Variablentest anstelle von "Hund" ändere? –

Antwort

3
String checker = "[" + test+ "]{" + test.length() + "}"; 

Nach dem Kommentar, hier ist die neue

Version
String checker = ""; 
for (int i = 1; i < test.length(); i++) 
    checker += "([" + test + "])(?!\" + i + ")"; 

So zum Beispiel für Zeichenfolge "Hund" sollte es aussehen "([dog])(?!\1)([dog])?(?!\1|\2)[dog]?"

+0

Was ich suche ist, den Buchstaben nur so oft zu verwenden, wie es im Originalwort ist. "D", "o" und "g" sind nur einmal vorhanden und wenn ein Wort einen dieser Buchstaben mehr als einmal verwendet, sollte es nicht zählen –

+0

Schauen Sie sich meine letzten Änderungen an – vZ10

+0

Wie setzt es ans auf wahr oder falsch? ? –

Verwandte Themen