如何在内存不足的环境中找到书中的高频词?

Sne*_*hal 5 text frequency

最近在技术访谈中,我被要求编写一个程序来查找教科书中的高频词(出现最多次数的词).程序的设计应该以最小的内存处理整个教科书.性能不是问题.我能够编程找到单词的频率,但它耗费了大量的内存.

你如何减少内存密集型操作?任何策略/解决方案?

-Snehal

ale*_*emb 5

您可能使用了内存密集但具有恒定查找时间的哈希表 - 因此性能/内存权衡显而易见.当你到达书的末尾时,你会知道你的答案.此外,为每个单词递增计数器的速度很快(因为快速散列表查找).

光谱的另一端是查看第一个单词,然后浏览整本书以查看该单词出现的次数.这需要最少的内存.然后你为下一个单词做同样的事情并浏览整本书.如果该单词出现的次数较多,则将其添加为顶部单词(或前N个单词).当然,这是非常低效的 - 如果第一个和第三个词是相同的,你将会再次阅读整本书,即使你对第一个词做了同样的事情.