【发布时间】:2013-03-02 06:49:59
【问题描述】:
考虑这段代码:
public String joinWords(String[] words) {
String sentence = "";
for(String w : words) {
sentence = sentence + w;
}
return sentence;
}
在每次串联时,都会创建一个新的字符串副本,因此总体复杂度为O(n^2)。幸运的是,在 Java 中,我们可以用 StringBuffer 解决这个问题,每个附加的复杂度为 O(1),那么总体复杂度将是 O(n)。
在 C++ 中,std::string::append() 的复杂度为 O(n),我不清楚 stringstream 的复杂度。
在 C++ 中,有没有像 StringBuffer 那样复杂度相同的方法?
【问题讨论】:
-
看到这个帖子了吗? stackoverflow.com/questions/2462951/…
-
另外,我不知道
StringBuilder/StringBuffer上有任何时间复杂度保证。 -
嗯.. 我看到了那个帖子,但我不太同意复杂性部分。
-
那么在这种情况下是什么:字符串的数量,还是字符串的总长度?大家会在这里选对吗?
标签: java c++ string time-complexity