python - 关于程序的时间复杂度

标签 python string time-complexity

我在一项竞争性考试中完成了问题,但我正在努力找出程序的时间复杂度,即它是O(n) 还是 O(n^2) 在 python 3 中。任何人都可以帮助我。

我问了我的一个 friend ,他们中的一些人告诉它是 O(n),而他们中的一些人告诉它是 O(n^2),所以我完全对这些答案感到困惑。

s = input() #reading base string
b = input() #reading reference string
for i in s:
    if i in b:
        print(i, end='')

示例输入:

 polikujmnhytgbvfredcxswqaz  #base string
 abcd  #refernce string

示例输出:

 bdca

最佳答案

根据我的经验,这里的误解是初学者中很常见,即大 O 表示法中只能有一个变量。这似乎会发生,因为大多数介绍性示例都是使用单个输入显示的。当您有多个独立输入时,您可以有多个变量,因为当任一输入发生变化时,复杂性将独立缩放。

图表就是一个常见的例子。图有节点和边。节点的数量可能会设定边的数量的上限,但两者实际上是相当独立的。因此,大多数图算法都是根据 VE 进行分析,而不是单个变量 N

这对您来说意味着您有两个独立的数量。假设S = len(s)B = len(b)。外层循环执行 S 次迭代。运算符in b 在最坏的情况下执行B 操作。如果您假设 print 在恒定时间内运行单个字符,则结果为 O(S * B)

关于python - 关于程序的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185196/

相关文章:

python - 多线程时 cv2 图像显示不起作用

Python Kivy 语言颜色属性

JavaScript 去除元音

java - 为什么我们无法在下面的代码中输入字符串 s1 ?

algorithm - Big O Notation - 自然数 M 和常数因子 C 是什么意思?

python - 一次使用 Pandas 返回多只股票

mysql - 从字符串中删除某些字符组

algorithm - 这个函数的时间复杂度是O(N)吗?

algorithm - 寻找最大元素的时间复杂度分析

python - 在连续运行的 C 和 Python 应用程序之间传递数据