为字符串列表中的子字符串实现更高效的Python算法

时间:2014-12-15 09:55:39

标签: python string algorithm data-structures

我在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中的字符串类覆盖此方法?

2 个答案:

答案 0 :(得分:2)

你可以看看cython:

http://docs.cython.org/src/quickstart/cythonize.html

我发现为特定操作编写一些自定义代码比覆盖核心python结构更容易。

答案 1 :(得分:1)

你不能,我很抱歉地说。

在编译解释器时构造的内置类型无法在运行时进行修补。如果速度真的如此重要,那么您可能希望编写一个C扩展类型,它对内置字符串类型进行子类化,但使用不同的包含方法。

相关问题