上周我参加了一个面谈。 我被困在算法一轮的问题之一。 我回答了这个问题,但面试官似乎并不服气。 这就是为什么我在共享相同。
请告诉我任何优化的方法这个问题,所以,这将帮助我在今后的采访。
问题 : -
有鉴于20个文本文件,所有文件都ASCII文本文件,其大小超过10 ^ 9个字节少。 有一个输入也给出了,这也是一个ASCII文件,比方说,input.txt中。
我们的任务是此输入文件与给定的20个文件的内容战略上匹配,并打印最接近的匹配文件名。 输入文件的内容可能只有部分匹配
提前致谢。 寻找你的善意回复。
diff的他们并穿过WC -l,或实现Levenshtein距离在C ++治疗每条线作为一个单个字符(或任何更合适的单元condidering主题域)
你可以创建一些类型的索引(例如:特里)的总结输入文件。 然后,你可以检查有多少指数匹配跨文档。
例如。 创建输入文件的长度10.特里树对于长度10在文本文件(重叠)的每个字符串检查有多少人在特里结构相匹配。
作为设计真正的能力,可扩展的系统文件相似我建议你阅读的第3章的建议挖掘海量数据集 ,其中自由可在网上。 一种方法提出有以“瓦”数据集通过矢量化字数为集合,然后散列这些字计数和比较与Jaccard相似哈希结果家庭得到的所有文档之间的分数。 这可如果使用得当的文件的PB级的工作精度高。 具有良好的图表明确细节可以读出斯坦福大学的在局部敏感散列CS246幻灯片 。 像词频统计简单方法在书中也描述。