如果有一个单词流,一个单词的出现率为51%或更高,我们怎样才能找到最常用的单词,如果只有字符串,并且int可以一次存储在内存中以帮助我们找到它。
我们一次只能访问每个单词,因为这是一个流。
不需要特定的语言,但这主要是考虑到Java。
此外,我不是要求代码,只是想法。 :)
答案 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);
}