问题已经在标题中,如果 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 ,我还没有发布答案。
答案 0 :(得分:-1)
source code似乎谈论了boyer-moore-horspool算法,根据维基百科,该算法的最坏情况是O(m * n)。
对于CPython,你的答案是O(m*n)
。一般来说,它显然与实现有关。
编辑:是的,我想知道你为什么要这样做,如果你已经做过研究。