我知道字数Qs已被多次询问,MAP似乎是它的一致选择。
但是我觉得如果文字很大而且单词的数量非常多,MAP可能会占用很多空间。那么为什么不使用Trie呢?叶节点将存储每个单词的频率。
或者,与特里相比,地图是明显的赢家吗?
Plz帮助我理解。
P.S。在SDE采访中被问到了。
答案 0 :(得分:4)
从here我们可以估算出英语中的单词大约为1M。从here我们得到了地图内存使用的公式。现在我们可以计算出,如果你的文本是语言的所有单词,你的地图将占用(平均字长6个字符)(32个字节用于短字符串(Windows)+ 4个字节int)* 1M +(可忽略的开销)= 36M ~34MB内存。
所以我要说除非你在嵌入式系统中,否则你不必担心。
答案 1 :(得分:3)
对我来说,trie似乎是一个非常合理的解决方案 - 对于大多数大型文本来说,它的占用空间肯定较小。还怀疑取决于映射的数据和内部工作,它可能更快。真正唯一的反对意见是,由于独特的字数不是非常严重的处理器密集,因此它有点过分。