|
|
1
3
理论上讲,你想做的事情是正确的 Aho--Corasick . 实现后缀链接有点复杂,所以这里有一个只使用trie的算法。 我们一个字母一个字母地消耗文本。在任何时候,我们都会在trie中维护一组可以遍历的节点。最初,这个集合只包含根节点。对于每个字母,我们循环遍历集合中的节点,如果可能,通过新字母降序。如果结果节点是匹配的,很好,请报告它。不管怎样,把它放在下一组。下一个集合还包含根节点,因为我们可以随时开始新的匹配。 下面是我在python中快速实现的尝试(未经测试,没有保修等)。
|
|
2
0
如果您的目标是获得一个依赖于文本窗口的更快的代码,那么您可以使用设置查找来加快速度。如果可行,将查找列表改为集合,然后在文本中查找用于查找的所有可能窗口。
|
|
3
0
嗯,这个怎么样?简单易懂:d
|
|
|
4
0
扩展@david eisenstat建议,使用aho corasick的算法来实现这一点。我找到了一个简单的python模块( pyahocorasic )可以做到这一点。 对于问题中给出的示例,下面是代码的外观。
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 2 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 2 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 2 年前 |