python中str.find的最坏情况时间复杂度

时间:2015-04-19 11:04:29

标签: python c string algorithm time-complexity

问题已经在标题中,如果 n str.find(string, substring)的长度,那么Python中string的C实现的最坏情况时间复杂度是多少? m substring的长度?源代码(https://hg.python.org/cpython/file/99f5a0475ead/Objects/stringlib/fastsearch.h)似乎谈论了boyer-moore-horspool算法,根据维基百科的最坏情况复杂度为O( m * n )。

编辑: O( m * n )指的是boyer-moore的运行时间 - horspool算法,它在字符串中找到 all 子串的出现。 Python的str.find方法仅查找子字符串的 一个 ,因此它(str.find)将取决于第一次出现substring的位置。所以 NO ,我还没有发布答案。

1 个答案:

答案 0 :(得分:-1)

  

source code似乎谈论了boyer-moore-horspool算法,根据维基百科,该算法的最坏情况是O(m * n)。

对于CPython,你的答案是O(m*n)。一般来说,它显然与实现有关。

编辑:是的,我想知道你为什么要这样做,如果你已经做过研究。