两个嵌套循环的时间复杂度取决于n和k

时间:2017-12-06 16:21:17

标签: time-complexity

我有一串n个字符和一个k长度的唯一子字符串

我试图了解此代码的时间复杂度:

for (int i = 0; i <= inputStr.length() - k; i++) {
    String substr = inputStr.substring(i, i + k);
    Set<Character> setChars =  new HashSet<Character>();
    for (int j = 0; j < k; j++) {
        setChars.add(substr.charAt(j));
    }
    if (setChars.size() == num) {
        set.add(substr);
    }
}

如果我正确理解时间复杂度可以用公式表示:

  

F((N-K + 1)* k)的

我相信我可以拥有的更糟糕的情况是k = n/2,所以:

  

f((n-k + 1) k)= n n / 2 - n / 2 * n / 2 + n / 2 = 1/2 * n * n - 1/4 * n * n + 1/2 * n =&gt;   为O(n)

1 个答案:

答案 0 :(得分:0)

你的意思是正确的。

  

f((n-k + 1)k)= nn / 2 - n / 2 * n / 2 + n / 2 = 1/2 * n * n - 1/4 * n * n + 1/2 * n

= 1 / 4n * n + 1/2 * n =&gt; O(N * N)