【发布时间】:2019-10-17 08:43:47
【问题描述】:
我已经知道这个问题的答案是O(N^2),但我不知道怎么回答。我知道 for 循环运行 N 次,但它如何运行 N^2 次?
public static String rev(String s) {
String r = "";
int N = s.length();
for (int i = 0; i < N; i++) {
r = s.charAt(i) + r;
}
return r;
}
【问题讨论】:
-
为什么答案是 O(N^2)?这似乎是错误的
-
-
charAt 必须有自己的迭代/循环才能在传递给函数的同一字符串中查找字符
-
那请教授解释一下。他/她可能将 s.charAt(i) 视为另一个循环 (O(n)),但事实并非如此。它是 O(1)。
-
看看codereview.stackexchange.com/questions/3972/…就知道了,复杂度来自于字符串连接,而不是来自
charAt()。
标签: java time complexity-theory analysis