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

标签 python c string algorithm time-complexity

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

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

最佳答案

The source code seems to talk about the boyer-moore-horspool algorithm, which according to Wikipedia has a worst-case complexity of O(m*n).

对于 CPython,您的答案是 O(m*n)。一般来说,它显然依赖于实现。

编辑:是的,如果您已经进行了研究,我想知道您为什么要问这个问题。

关于python - python 中 str.find 的最坏情况时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728969/

相关文章:

python - 查看 Django 模板中的所有对象

java - Java 字符串并非真正不可变的含义是什么?

c++ - 路径如何存储在这种结构中,以及如何将其转换为其他结构?

c - sscanf 读取它不应该读取的内容

c - 简单的 C 数组结构

c - C编程中非常大的矩阵

string - 获取和删除字符串的第一个字符

python - 表达方式在 Python 中组合生成器

Python argparse - 禁用子命令的帮助?

python - 如何从面向对象编程获取数据到mySQL?