簡體   English   中英

JavaScript 字符串連接效率

[英]JavaScript string concatenation efficiency

我正在做一個練習題,涉及在 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 class。

但是,這將如何在 Javascript 中工作? 使用“+=”的字符串連接是否也可以在 O(n^2) 時間內工作?

為了澄清,讓我們分解字符串連接和 for 循環之間的運行時復雜性。 Java 中的字符串連接為 O(n),因為 Java 創建了一個全新的字符串。 既然你已經把它放在了一個 for 循環中,現在我們將另一個n相乘得到 O(n^2)。

字符串連接不是 O(n^2), for 循環內的連接是 O(n^2)。

在 JavaScript 中,字符串連接的工作方式不同,更復雜的是,基礎依賴於瀏覽器。 這是 2010 年的一篇文章,解釋了一些差異。 許多瀏覽器也針對字符串操作進行了優化。 查看有關字符串連接的相關問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM