【发布时间】:2013-08-10 23:17:54
【问题描述】:
我在想in 运算符是如何实现的,例如
>>> s1 = 'abcdef'
>>> s2 = 'bcd'
>>> s2 in s1
True
在CPython中,用什么算法来实现字符串匹配,时间复杂度是多少?有没有关于这个的官方文档或维基?
【问题讨论】:
-
谁能告诉我为什么 KMP 没有用于这个实现?
标签: python string algorithm cpython
我在想in 运算符是如何实现的,例如
>>> s1 = 'abcdef'
>>> s2 = 'bcd'
>>> s2 in s1
True
在CPython中,用什么算法来实现字符串匹配,时间复杂度是多少?有没有关于这个的官方文档或维基?
【问题讨论】:
标签: python string algorithm cpython
它是Boyer-Moore 和Horspool 的组合。
可以查看C代码here:
快速搜索/计数实现,基于 Boyer-Moore 和 Horspool 之间的混合,顶部还有一些花里胡哨。有关更多背景信息,请参阅:https://web.archive.org/web/20201107074620/http://effbot.org/zone/stringlib.htm。
从上面的链接:
在设计新算法时,我使用了以下约束:
【讨论】: