Heim  >  Artikel  >  Web-Frontend  >  Optimieren der String-Verkettung mit StringBuilder

Optimieren der String-Verkettung mit StringBuilder

WBOY
WBOYOriginal
2024-07-30 15:47:20458Durchsuche

Optimizing String Concatenation with StringBuilder

Setzt Verständnis der Big-O-Notation voraus. Beispiele sind in JavaScript. Informationsreferenzen „Cracking the Coding Interview“ von Gayle Laakmann McDowell

Stellen Sie sich vor, Sie möchten eine große Anzahl von Zeichenfolgen miteinander verketten. Unter der Annahme, dass die Zeichenfolgen alle die gleiche Länge x haben und es n Zeichenfolgen gibt, dauert es O(x+2 x+...+nx)O(x + 2x + ... + nx)O(x+2x+...+nx) Zeit. Bei jeder Verkettung erstellen wir eine Kopie der vorherigen Zeichenfolge und kopieren die neue Zeichenfolge. Daher würde die erste Iteration das Kopieren von x Zeichen erfordern. Die nächste Iteration würde das Kopieren von 2x Zeichen usw. erfordern.

Wir können die zuvor angegebene Laufzeit tatsächlich noch weiter vereinfachen:

x+2x+ ...+nx=x(1+2+...+n)=x (n(n1)2)=xn2 x + 2x + ... + nx = x(1 + 2 + ... + n) = x(frac{n(n-1)}{2}) = xn^2 x+2x+...+nx=x(1 +2+...+n)=x(2n(n−1))=xn2

Daher dauert das Verketten von Zeichenfolgen in dieser Angelegenheit O(xn2 )O(xn^2)O(xn 2) Zeit zum Abschluss. Ziemlich lange, wenn du mich fragst. Hier ist der Algorithmus:

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

StringBuilder-Klasse

Eine StringBuilder-Klasse kann Ihnen helfen, diese lange Laufzeit zu vermeiden. Diese Klasse erstellt einfach ein in der Größe veränderbares Array aller Strings und kopiert sie nur bei Bedarf zurück in einen String.

In JavaScript können wir einfach die Join-Methode für ein Array mit veränderbarer Größe verwenden, um die Liste der Zeichenfolgen in eine Zeichenfolge zu kopieren.

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

    return sentence.join("");
}

Das Anhängen einer Zeichenfolge an das Array dauert nun O(1)O(1) O(1) Zeit pro Vorgang. Der letzte Schritt des Kopierens des Arrays in eine einzelne Zeichenfolge dauert O(n)O(n) O(n) Zeit, wobei n die Anzahl der Strings im Array ist.

Das obige ist der detaillierte Inhalt vonOptimieren der String-Verkettung mit StringBuilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:WebSocketsNächster Artikel:WebSockets