我正在阅读一本关于算法问题的流行书籍,并看到了字符串连接的实现,如下所示:
public String joinTheStrings(String[] theStrings){
String joinedString = "";
for(String singleString : theStrings){
joinedString = joinedString + singleString;
}
return joinedString;
}
然后作者继续声称此实现是O(n^2)
,并且优化将使用 aStringBuffer
代替joinedString
,他们声称将使用该算法O(n)
。但是,我看不到原始算法是如何O(n^2)
- 在我看来,对于 N 个单词,将有 N 个操作(将字符串加在一起)。
更新:感谢您的回复。看起来我对作者如何将字符数组的复制(我认为这是一个常数)视为摊销运行时 N 的另一个因素感到困惑?