Algorithm 获取文本流中的唯一单词
在给定的实例中,我们可以在文本流中找到唯一的单词。 我能想到的一个简单的解决方案是使用hashmap来统计单词Algorithm 获取文本流中的唯一单词,algorithm,space-complexity,Algorithm,Space Complexity,在给定的实例中,我们可以在文本流中找到唯一的单词。 我能想到的一个简单的解决方案是使用hashmap来统计单词 但这需要在hashmap中保留字数大于1的单词。在长文本流的情况下,需要维护的单词会很多。有没有办法解决这个问题的空间复杂度。如果不支付空间复杂度,就无法准确地获得不同单词的数量。但是,您可以通过使用本手册幻灯片20中所述的方法获得一个相当好的估计值 假设数据流由从一组大小N中选择的元素组成,您可以从上面链接的幻灯片中复制以下步骤 选择一个哈希函数h,该函数将每个N元素映射到至少log
但这需要在hashmap中保留字数大于1的单词。在长文本流的情况下,需要维护的单词会很多。有没有办法解决这个问题的空间复杂度。如果不支付空间复杂度,就无法准确地获得不同单词的数量。但是,您可以通过使用本手册幻灯片20中所述的方法获得一个相当好的估计值 假设数据流由从一组大小
N
中选择的元素组成,您可以从上面链接的幻灯片中复制以下步骤
h
,该函数将每个N
元素映射到至少log_2(N)
位a
,让r(a)
为h(a)
中的尾随0
R(a)
2^R
当计数大于1时,为什么不从哈希映射中删除这些单词?如果任何单词出现奇数次,这将不起作用。例如,如果一个单词出现3次,首先我们将它添加到Hashmap,其次我们将删除它。对于第三次出现,我们将不知道这个词是以前出现过,还是被删除了,或者是它的第一次出现。这就是我的想法,但是提出这样一个散列函数是一个挑战。在误差百分比很小的情况下,即允许碰撞,我们可以实现这一点。