|
|
1
2
除了暴力,最简单的解决方案是制作一个哈希图,为一个文本的每个单词元组输入条目,然后检查另一个文本中的每个元组是否存在于哈希图中。如果给定一个恒定的窗口(3个字),这将是线性的,但是我们可以在线性时间内做到这一点,而不受窗口大小的影响。 为了有效地做到这一点,我们使用 rolling hash . 滚动哈希的输入字符将是单词的哈希。这种技术被称为 Rabin-Karp algorithm . |
|
|
2
2
听起来您在寻找长度为3的常见子串,除了“字符串”由“字符”组成,实际上是单词,而不是单个字符。所以,“我有一个狡猾的计划”是一个长度为5的字符串。 后缀树通常在这里提到: http://en.wikipedia.org/wiki/Generalised_suffix_tree 但是,你是否需要这取决于你的文本有多长。从每对单词边界(每个字符串一个)开始进行比较的两个嵌套循环将最终完成该任务。 |