来自文本的字数...是否可以使用特里?

时间:2011-07-25 09:16:13

标签: c++ data-structures

我知道字数Qs已被多次询问,MAP似乎是它的一致选择。

但是我觉得如果文字很大而且单词的数量非常多,MAP可能会占用很多空间。那么为什么不使用Trie呢?叶节点将存储每个单词的频率。

或者,与特里相比,地图是明显的赢家吗?

Plz帮助我理解。

P.S。在SDE采访中被问到了。

2 个答案:

答案 0 :(得分:4)

here我们可以估算出英语中的单词大约为1M。从here我们得到了地图内存使用的公式。现在我们可以计算出,如果你的文本是语言的所有单词,你的地图将占用(平均字长6个字符)(32个字节用于短字符串(Windows)+ 4个字节int)* 1M +(可忽略的开销)= 36M ~34MB内存。

所以我要说除非你在嵌入式系统中,否则你不必担心。

答案 1 :(得分:3)

对我来说,trie似乎是一个非常合理的解决方案 - 对于大多数大型文本来说,它的占用空间肯定较小。还怀疑取决于映射的数据和内部工作,它可能更快。真正唯一的反对意见是,由于独特的字数不是非常严重的处理器密集,因此它有点过分。