【问题标题】:JavaScript string concatenation efficiencyJavaScript 字符串连接效率
【发布时间】:2020-01-21 23:50:14
【问题描述】:

我正在做一个涉及在 for 循环中连接字符串的练习题。我在这个网站上看到了一些关于旧相关问题的信息,但我想知道其他一些细节。我从(Cracking the Coding Interview)中得到练习题的书用 Java 给出了解决方案。这是代码的简化版本,只是为了说明问题:

for(int i = 0; i < str.length; i++){
   string += str.charAt(i) + i;
}

这本书指出了这很慢,因为 Java 中的字符串连接在 O(n^2) 中运行。而解决这个问题的方法是在java中使用StringBuilder类。

但是,这在 Javascript 中如何工作?使用 "+=" 的字符串连接是否也可以在 O(n^2) 时间内工作?

【问题讨论】:

标签: javascript arrays string performance


【解决方案1】:

为了澄清,让我们分解字符串连接和 for 循环之间的运行时复杂性。 Java 中的字符串连接是 O(n),因为 Java 创建了一个全新的字符串。既然你已经把它放在一个 for 循环中,现在我们乘以另一个 n 得到 O(n^2)。

字符串拼接不是O(n^2),for循环内拼接是O(n^2)。

在 JavaScript 中,字符串连接的工作方式不同,更复杂的是,其基础依赖于浏览器。 Here's an article from 2010 解释了一些差异。许多浏览器也针对字符串操作进行了优化。看看这个related question on string concatenation.

【讨论】:

  • 感谢您的澄清和资源!
猜你喜欢
  • 1970-01-01
  • 2012-02-02
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 2011-10-19
  • 2013-10-13
  • 1970-01-01
相关资源
最近更新 更多