【发布时间】:2015-02-13 09:23:20
【问题描述】:
我正在 Python 中执行以下操作
我遇到一个问题,需要检查输入字符串的大列表(大小为 n),以查看子字符串是否包含大字典(大小为 m)中的任何单词。
我四处寻找有效的算法来解决这个问题,发现了这些: https://github.com/laurentluce/python-algorithms/blob/master/algorithms/string_matching.py
Rabin-Karp 和 KMP 匹配算法。(请注意,为了提高效率,我已将 Rabin-Karp 的 ord() 函数替换为字典)
但是,这些实际上比在 Python 中使用 Boyer-Moore-Horspool 算法的“in”操作要慢。我想这是因为 'in' 调用的 contains() 方法是用 C 实现的。
如何用 Rabin-Karp 为 C 中 Python 中的字符串类覆盖此方法?
【问题讨论】:
标签: python string algorithm data-structures