python中的非字符串形式的大O表示法是什么

时间:2018-10-29 03:20:38

标签: python

我正在尝试练习一些编码问题,并且想知道如何为下面的代码string[i] in string[i+1:]string[i] not in seens计算大O

def findNoCurring(string):
    seens = set()
    for i in range(len(string)):
        if not string[i] in string[i+1:] and string[i] not in seens:
            return string[i]
        else:
            seens.add(string[i])
    return None

1 个答案:

答案 0 :(得分:1)

string[i] in string[i+1:]行将使您的算法成为O(N^2)。通过这一行,您将检查字符串中的每个字符以及其他每个字符。如果string = "abcd",则您要针对abc来检查d,然后针对{{ 1}},b等。由于Python集的实现类似于字典,因此c行平均为O(1)(请参见答案here)。

请注意,Python列表的d操作平均为string[i] not in seens。参见this