如何在单词流中找到最常用的单词?

时间:2012-07-18 18:09:27

标签: java restrictions

  

可能重复:
  Finding the max repeated element in an array

如果有一个单词流,一个单词的出现率为51%或更高,我们怎样才能找到最常用的单词,如果只有字符串,并且int可以一次存储在内存中以帮助我们找到它。

我们一次只能访问每个单词,因为这是一个流。

不需要特定的语言,但这主要是考虑到Java。

此外,我不是要求代码,只是想法。 :)

1 个答案:

答案 0 :(得分:0)

为了完整性,在Java中实现the duplicate I pointed at中提出的算法,应用于示例:

public static void main(String[] args) throws InterruptedException {
    List<String> list = Arrays.asList("a", "b", "c", "a", "d", "e", "a", "a", "b", "b", "a");
    int counter = 0;
    String mostFrequentWord = "";
    for (String streamed : list) {
        if (streamed.equals(mostFrequentWord)) {
            counter++;
        } else if (counter == 0) {
            mostFrequentWord = streamed;
            counter = 1;
        } else {
            counter--;
        }
    }
    System.out.println(mostFrequentWord);
}