我有一串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)
答案 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)