2017-02-13 54 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

相关问题