给出下列判断字符串相等的两段代码,在不查询资料的情况下说明两段代码有什么区别,分别在什么情况下适用。语言:Python

第一段:

def equals(str1, str2) -> bool:
    if len(str1) != len(str2):
        return False
    equal = True
    for i in range(len(str1)):
        equal &= str1[i] == str2[i]
    return equal

第二段:

def equals(str1, str2) -> bool:
    if len(str1) != len(str2):
        return False
    for i in range(len(str1)):
        if str1[i] != str2[i]:
            return False
    return True

均为7行

This post belongs to Column 「算法专栏」 .

1 comment
latest

  • samzhangjy

    显然代码1的时间复杂度恒为 $O(n)$ ,取 $n$ 为 $max(|str1|, |str2|)$ 。而代码2的时间复杂度在不同情况下可能略小于 $O(n)$ ,最坏情况下仍为 $O(n)$ 。综上,第二段更快。