给出下列判断字符串相等的两段代码,在不查询资料的情况下说明两段代码有什么区别,分别在什么情况下适用。语言: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 「算法专栏」 .
samzhangjy
2022-05-14T12:56:51Z显然代码1的时间复杂度恒为 $O(n)$ ,取 $n$ 为 $max(|str1|, |str2|)$ 。而代码2的时间复杂度在不同情况下可能略小于 $O(n)$ ,最坏情况下仍为 $O(n)$ 。综上,第二段更快。