计数字符串函数的时间和空间复杂度是多少

时间:2019-01-31 02:13:32

标签: python algorithm

def count(substring, string):
    """
    >>> count("bc","abcabcabc")
    3
    """
    counter = 0
    for i in range(len(string) - len(substring) + 1):
        counter += string.startswith(substring, i)

    return counter

此函数用于计算基本字符串中子字符串重复出现的次数。我认为时间复杂度为O(n),因为我只将字符串重复一次。我认为空间复杂度也是O(n),因为我在循环中将计数器增加了N次。有人可以告诉我我是对还是错?

1 个答案:

答案 0 :(得分:2)

由于您提供的原因,时间复杂度为O(nm),其中n = len(s)和m = len(t),但是增加counter不会占用更多空间,因此该函数的空间复杂度为O(1)。无论输入字符串有多长,您仍然只存储一个变量count

[编辑以纠正张贴者指出的严重错误]