1
3
理论上讲,你想做的事情是正确的 Aho--Corasick . 实现后缀链接有点复杂,所以这里有一个只使用trie的算法。 我们一个字母一个字母地消耗文本。在任何时候,我们都会在trie中维护一组可以遍历的节点。最初,这个集合只包含根节点。对于每个字母,我们循环遍历集合中的节点,如果可能,通过新字母降序。如果结果节点是匹配的,很好,请报告它。不管怎样,把它放在下一组。下一个集合还包含根节点,因为我们可以随时开始新的匹配。 下面是我在python中快速实现的尝试(未经测试,没有保修等)。
|
2
0
如果您的目标是获得一个依赖于文本窗口的更快的代码,那么您可以使用设置查找来加快速度。如果可行,将查找列表改为集合,然后在文本中查找用于查找的所有可能窗口。
|
3
0
嗯,这个怎么样?简单易懂:d
|
4
0
扩展@david eisenstat建议,使用aho corasick的算法来实现这一点。我找到了一个简单的python模块( pyahocorasic )可以做到这一点。 对于问题中给出的示例,下面是代码的外观。
|
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |