2017-02-13 9 views
0

最近、私は学校で取り組むことができない質問に挑戦しました。Java:Javaの単語の重複した単語とサブ文字列を削除する

単語からなる入力文字列内の重複単語を削除する必要があります。ここでの主な問題は、配列や正規表現を使うことができないという要件です。

など。

USERINPUT =「これはテストのテストが楽しみ本当に楽しいです」

  • 最初は「これ」それはサブ
  • であるように、第2のaは「さ」の複製である「さ」最初の複製それは完全一致ではないよう
  • 「テスト」「さ」ゆえ出力として出てくる

「テスト」の複製ではありません -

「本当にこのテストテストの楽しみ」

空白で単語を分割し、javaでStringを動的に作成することは不可能なので、配列や正規表現を使用せずに実際にこれを達成するにはどうしたらよいですか?

+0

私は元の 'String'に' indexOf'、 'substring'と' contains'という何らかのループを使用したいと思います。 –

+1

@ScaryWombat私たちは後ろ向きに見ていると思います。 – shmosel

+3

あなたが試したことを教えてください。コードまたはアルゴリズム、その後、その時点からソリューションは形になります。 –

答えて

0

私はこのコードをコンパイルしませんでしたが、動作するはずです。 あなたの問題を解決するのに役立つかどうか教えてください。

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

ですが、この背後にあるロジックは、1つの変数を作成し、それに単語を追加し続けることです。大変ありがとうございました。 –

+0

@ Praveen.K:どうぞよろしくお願いいたします。あなたの研究のためのGoodluck。 – algojava

関連する問題