我在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算法。我想这是因为'在'中调用了 contains()方法。是用C实现的。
如何使用Rabin-Karp为C中的Python中的字符串类覆盖此方法?
答案 0 :(得分:2)
你可以看看cython:
http://docs.cython.org/src/quickstart/cythonize.html
我发现为特定操作编写一些自定义代码比覆盖核心python结构更容易。
答案 1 :(得分:1)
你不能,我很抱歉地说。
在编译解释器时构造的内置类型无法在运行时进行修补。如果速度真的如此重要,那么您可能希望编写一个C扩展类型,它对内置字符串类型进行子类化,但使用不同的包含方法。