这个函数的O()复杂度是多少?

时间:2017-07-13 06:55:25

标签: swift big-o

这是一个简单的函数,用于检查字符串是否唯一。我认为复杂性应该是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
}

1 个答案:

答案 0 :(得分:2)

是的,这个问题背后有很多神话,当你分析 Big O 主题时,你会得到很多不同的答案。最受欢迎的问题是:

  

&#34;如果两个嵌套的for循环包含break语句。我的复杂性仍然如此   是n * n还是O(n2)?&#34;

我认为简单的答案是&#34;

Big-O表示法并不是根据您的实际参数找到确切的值。它是关于确定渐近运行时。