Algorithm 从A中找到B条中的连续词

Algorithm 从A中找到B条中的连续词,algorithm,Algorithm,有两篇文章,A和B,它们非常大。在A中获得三个或更多连续的单词,检查它们是否出现在B中,并计算它们出现的次数。例如,如果“book”、“his”和“her”出现在A中,它们在B中出现多少次 我考虑过拆分B的全部内容,然后用StringToken检查A中的所有3个单词,但我不确定算法的效率。很明显,您需要扫描/解析B的全部内容一次才能得到结果。你无法避免这样做。逐行读。对于每一行,搜索给定的查询词及其在该行中的计数。继续添加每行生成的计数,以获得最终结果 如果您想对相同/不同术语的B的内容进行多次

有两篇文章,A和B,它们非常大。在A中获得三个或更多连续的单词,检查它们是否出现在B中,并计算它们出现的次数。例如,如果“book”、“his”和“her”出现在A中,它们在B中出现多少次


我考虑过拆分B的全部内容,然后用StringToken检查A中的所有3个单词,但我不确定算法的效率。

很明显,您需要扫描/解析B的全部内容一次才能得到结果。你无法避免这样做。逐行读。对于每一行,搜索给定的查询词及其在该行中的计数。继续添加每行生成的计数,以获得最终结果

如果您想对相同/不同术语的B的内容进行多次这样的计算,最好的方法是为B创建一个

查看a是什么,逐个扫描文件B中的单词(如果不关心大文件上的内存使用情况,可以拆分),将找到的每个单词放入哈希表中(如果找不到),或者增加查看单词的次数

然后你只需扫描。通过一个滚动滑动窗口,查找每组3个单词。这样,您可以在以后增加窗口的长度,而无需重写任何内容


作为参考,你应该在作业问题上加上这样的标签。

问题:1)你需要只为两个文档做这项工作,还是为许多文档成对做这项工作?2) 您感兴趣的连续单词的数量是否有上限,或者您实际上是在寻找最长的匹配项?3) 这是专门针对任何编程语言的吗(您提到的
StringToken
哪种听起来特别)?您使用的是哪种语言?这是家庭作业吗?语言是Java,是的,这是家庭作业,因为我在谷歌上搜索了一些问题,我发现了这一点,1)到目前为止,它仅限于2个文档2)没有上限,最长可能的匹配将是一个升级选项,更好3)Java还有一个问题:我不理解“book”的示例,“his”和“her”与问题描述相符。这是三个单独的词,而不是“三个连续的”词。你说的“得到”三个或更多连续的单词是什么意思?您想识别A和B有共同点的所有单词吗?