首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3TB TXT文件中的重复字符串

3TB TXT文件中的重复字符串
EN

Stack Overflow用户
提问于 2010-09-09 15:56:35
回答 11查看 625关注 0票数 1

假设有一个3TB的TXT文件,其中每一行都是一个字符串,如何查找其中重复的字符串?这是我一个朋友的面试问题。我们最好在面试后把这些问题弄清楚,以防下次面试。

PS:如果我是面试官,我会告诉面试官:你们怎么能在一个TXT文件中存储这么多字符串?这真是个坏主意!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-09-09 16:07:42

sort bigfile.txt | uniq -d

票数 4
EN

Stack Overflow用户

发布于 2010-09-09 16:06:06

一种可能性是使用bloom filter。

bloom过滤器速度很快(就像使用哈希码一样),并且没有漏报。这也是非常节省空间的。可以调整各种参数(大小(m)和函数数量(k)),以以大小和时间为代价获得更好的假阳性率。

将所有字符串逐个添加到筛选器表示的集合中。在插入时,您可以确定是否存在重复项。因为它没有假阴性,所以你只需要仔细检查过滤器出现的“重复”字符串。

如果你想了解更多关于布隆过滤器的信息,请访问wikipedia

到目前为止,这是解决这个问题的最佳方法。代理服务器使用Bloom过滤器来确定URL是否在其缓存中。代理服务器可以看到数十亿个URL,并且需要能够非常快速地判断URL是新的还是以前被它“看到”过的。如果URL是“新的”,代理服务器立即从原始URL获取网站,而不是在其缓存中查找它。

这里的所有其他答案,即使是远程使用"sort“,显然也是错误的。

票数 5
EN

Stack Overflow用户

发布于 2010-09-09 16:09:17

如果每行只有一个单词,为什么不直接将文本文件转储到具有以下列id、text等的数据库表中

代码语言:javascript
复制
select text, count(text) 
from table 
group by text
having count(text)>1

那么你应该以一种非常简单的方式得到正确的答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3674726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档