2017-07-13 29 views
0

這是一個簡單的函數,用於檢查字符串是否唯一。我認爲複雜度應該是N * N - > N^2。它是否正確?即使第二個N總是比第一個小。這個函數的O()複雜度是多少?

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

是的,這是正確的。 – zneak

回答

2

是的,有很多這個問題背後的神話,當你分析大O話題,你得到這麼多不同的答案。最常見的問題是:

「如果兩個嵌套for循環包含break語句,那麼我的複雜度 是n * n還是O(n2)?」

我認爲簡單的答案是」

大O符號是不是給你的實際參數精確查找值。它是關於確定漸近運行。

相關問題