这是一个接受两个输入字符串的简单功能。如果第二个字符串是第一个字符串的字谜,则返回True。
def validAnagram(str1, str2):
if len(str1) != len(str2):
return False
str1_arr = [char for char in str1]
str2_arr = [char for char in str2]
for char in str1_arr:
if char in str2_arr:
str2_arr.remove(char)
else:
return False
return True
我正在学习计算所编写程序的BigO。该函数的运行时是O(N 2)还是O(N 3)?
我假设其为O(N 3),因为“如果”条件也运行O(N)。因此,它的3个嵌套O(N)操作,导致O(N 3)运行时。如果我错了,请纠正我。
是的O(N^2)
。您需要O(N)
执行一些迭代O(N)
操作。这O(N^2)
总体上导致复杂性。
我认为您出了错是在计算这部分O(N^2)
,而实际上是O(N)
:
if char in str2_arr:
str2_arr.remove(char)
因为你在O(N) + O(N)
这里,现在仍然只是O(N)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句