这是一个简单的函数,用于检查字符串是否唯一。我认为复杂性应该是N * N - > N ^ 2。它是否正确?即使第二个N总是小于第一个。
func isUnique(_ str: String) -> Bool {
let charArr = Array(str.characters)
for (i1 , char) in charArr.enumerated() {
guard i1 != charArr.count - 1 else {
break
}
for (i2, char) in charArr[(i1 + 1)..<charArr.count].enumerated() {
if charArr[i1] == char {
return false
}
}
}
return true
}
答案 0 :(得分:2)
是的,这个问题背后有很多神话,当你分析 Big O 主题时,你会得到很多不同的答案。最受欢迎的问题是:
&#34;如果两个嵌套的for循环包含break语句。我的复杂性仍然如此 是n * n还是O(n2)?&#34;
我认为简单的答案是&#34;
Big-O表示法并不是根据您的实际参数找到确切的值。它是关于确定渐近运行时。