0

我有两个word包含单词(单词是列表单词的副本)和包含字符的列表,我想通过迭代 for 循环existingGuesses来比较它们(意味着比较每个字符是否存在于列表中)。word有人可以建议我如何进行比较吗?

  public List<String> getWordOptions(List<String> existingGuesses, String newGuess)            
   {
     List<String> word = new ArrayList<String>(words);

 /* String  c = existingGuesses.get(0);
    ListIterator<String> iterator = word.listIterator();
    while(iterator.hasNext()){

     if(word.contains(c)) 
     {
         word.remove(c);
     }
    }*/
    for(String temp: word){
        for(String cha: existingGuesses){

    }
    }
    return null;
}
4

4 回答 4

1

下面的 O(N) 复杂度代码怎么样

public List<String> getWordOptions(List<String> existingGuesses, String newGuess) {
    List<String> word = new ArrayList<String>(words);
    for (String cha : existingGuesses) {

        if (word.contains(cha)) {
            word.remove(cha);
        }

    }
    return null;
}
于 2013-09-24T10:43:09.780 回答
1

您可以使用List#contains(Object)来检查这样的单词中的猜测。

for(String myGuess: existingGuesses){
    if(word.contains(myGuess)) {
        // Do what you want
    }
}
于 2013-09-24T10:40:23.093 回答
0

如果您想比较它们并在其存在时将其删除,

然后你可以使用List#removeAll(anotherlist)

从此列表中删除包含在指定集合中的所有元素(可选操作)。

word.remove(c);(从您的注释代码中获得线索 )。

于 2013-09-24T10:42:25.040 回答
0

您可以使用Collection.retainAll

List<String> word=new ArrayList<String>();//fill list
List<String> existingGuesses=new ArrayList<String>();//fill list

List<String> existingWords=new ArrayList<String>(word);

existingWords.retainAll(existingGuesses);

//existingWords will only contain the words present in both the lists
System.out.println(existingWords);
于 2013-09-24T10:49:07.243 回答