首頁  >  文章  >  web前端  >  使用 StringBuilder 最佳化字串連接

使用 StringBuilder 最佳化字串連接

WBOY
WBOY原創
2024-07-30 15:47:20544瀏覽

Optimizing String Concatenation with StringBuilder

假設理解 Big O 表示法。 JavaScript 中有範例。資料參考 Gayle Laakmann McDowell 的《Cracking the Coding Interview》

想像一下您想要將大量字串連接在一起。假設字串的長度都相同 x 且有 n 個字串,則需要 O(x+x+x+...+.+.+n+ 🎜>x)O(x + 2x + ... + nx)


O(x+
O(x+2x+...+nx) 時間。在每次串聯時,我們都會建立前一個字串的副本並複製新字串。因此,第一次迭代需要複製 x 個字元。下一次迭代將需要複製 2x 個字符,依此類推。 我們實際上可以進一步簡化前面提到的運行時: x+2x2x ...+nx=x(1+2+2+2+2+2+2 >..+n)=x=xx (n(n1111112)=xnx x + 2x + ... + nx = x(1 + 2 + ... + n) = x(壓裂{n(n-1)}{2}) = xn^2
x+2x+...+nx= +2+...+n)=x(x(2n(n−1))=xn

因此,在這件事上連接字串需要 O(xnxnn )O(xn^2)O(xnO(xn 2

function joinWords(words) {
    let sentence = "";
    for (let w of words) {
        sentence = sentence + w;
    }
    return sentence;
}

)

時間完成。如果你問我的話,很長。演算法如下:

字串生成器類

function joinWords(words) {
    let sentence = [];
    for (let w of words) {
        sentence.push(w);
    }

    return sentence.join("");
}
StringBuilder

類別可以幫助您避免這麼長的運行時間。簡而言之,此類創建所有字串的可調整大小的數組,並僅在必要時將它們複製回字串 在 JavaScript 中,我們可以簡單地在可調整大小的陣列上使用 join 方法將字串清單複製到字串中。 現在,將字串附加到陣列需要 O(1)1)O(1) O(1) 每次操作的時間。將數組複製到單一字串的最後一步需要 O(

n)n)O(n🎜> O(n) time,其中 n 是數組中字串的數量。

以上是使用 StringBuilder 最佳化字串連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:WebSockets下一篇:WebSockets