2017-02-13 1 views
0

Kürzlich bin ich auf eine Frage gestoßen, die ich in der Schule nicht bewältigen kann.Java: Entfernen doppelter Wörter und Teilstrings von Wörtern in Java

Ich muss doppelte Wörter in einer Eingabezeichenfolge entfernen, die aus Wörtern besteht. Das Hauptproblem hier ist, dass die Anforderung besagt, dass ich keine Arrays oder reguläre Ausdrücke verwenden kann.

z.

userinput = „Dies ist ein Test-Test ist Spaß erst richtig Spaß“

  • das ersten „ist“ ist ein Duplikat von „this“, wie es ein Teil
  • ist
  • das zweit „ist“ ein Duplikat der ersten „ist“
  • „Test“ ist kein Duplikat von „Test“, wie es keine exakte Übereinstimmung ist

daher kommt die Ausgabe aus wie - „Dies ist ein Test Test Spaß erst richtig“

Wie würde man das erreichen, ohne Arrays oder reguläre Ausdrücke zu verwenden, da es unmöglich ist, die Wörter durch weiße Leerzeichen aufzuteilen und dynamisch einen String in Java zu erstellen.

+0

Ich würde eine Art von Schleife verwenden, die 'indexOf',' substring' und 'contains' auf dem ursprünglichen' String' genannt. –

+1

@ScaryWombat Ich denke, wir schauen nur rückwärts. – shmosel

+3

Bitte zeigen Sie uns, was Sie versucht haben. Der Code oder der Algorithmus, ab diesem Zeitpunkt wird die Lösung Gestalt annehmen. –

Antwort

0

Ich habe diesen Code nicht kompiliert, aber ich denke, es sollte funktionieren. Lassen Sie es mich wissen, wenn es Ihnen helfen kann, Ihr Problem zu lösen.

public String solve(String input) { 
    String ret = ""; 
    int pos = 0; 

    while(pos<input.length()) { 
     // find next position of space 
     int next = input.indexOf(' ',pos); 

     // space not exists, skip next to end of string 
     if(next==-1) next = input.length(); 

     // take 1 word from input 
     String word = input.substring(pos,next); 

     // check if word exists in previous result 
     if(ret.indexOf(word)==-1) { 
      if(ret.length() > 0) ret += " "; 
      // append word to ret 
      ret += word; 
     } 
     pos = next + 1; 
    } 
    return ret; 
} 
+0

Ich sehe, so ist die Logik dahinter, eine Variable zu erstellen und fügen Sie die Wörter daran an. Vielen Dank, mein Herr. –

+0

@ Praveen.K: Gern geschehen. Guten Rutsch für Ihr Studium. – algojava

Verwandte Themen