2017-02-13 73 views
0

最近我遇到了一個問題,我無法在學校解決。Java:在java中刪除重複的單詞和子字串

我需要刪除由單詞組成的輸入字符串中的重複單詞。這裏的主要問題是需求說明我不能使用數組或正則表達式。

E.g.

userInput =「這是一個測試測試是相當有趣好玩」

  • 第一「是」是的副本「這個」,因爲它是一個子
  • 第二個「是」,是一個重複第一「是」
  • 「測試」是不是「測試」重複,因爲它是不完全匹配

因此輸出出來的 - 「這是一條測試的測試相當有趣」

實際上,如果不使用數組或正則表達式,實際上會如何實現這一點,因爲不可能將單詞拆分爲空格並在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

我看到答案algoJava提供了下面的工作正常,所以這背後的邏輯是創建一個變量,並不斷追加單詞。謝謝你太好了,先生。 –

+0

@ Praveen.K:不客氣。 Goodluck爲你的學習。 – algojava