Inhaltsverzeichnis
Problemstellung
Methode
Methode 1: Brute-Force-Cracking
Beispiel
Ausgabe
Methode 2: Zwei-Zeiger-Methode
Fazit
Heim Web-Frontend js-Tutorial Berechnen Sie passende Teilzeichenfolgen in JavaScript

Berechnen Sie passende Teilzeichenfolgen in JavaScript

Aug 23, 2023 pm 11:21 PM

在 JavaScript 中计算匹配子字符串

Die Fähigkeit, passende Teilzeichenfolgen in einer bestimmten Zeichenfolge genau zu berechnen, ist eine Schlüsselkompetenz in der JavaScript-Programmierung, da sie es Entwicklern ermöglicht, Textdaten effizient zu analysieren und zu bearbeiten. Dieser Artikel befasst sich mit der Welt der String-Manipulation und untersucht die Komplexität der Berechnung übereinstimmender Teilstrings in JavaScript mithilfe einer Reihe wenig bekannter Techniken. Durch die Klärung der zugrunde liegenden Logik und den Einsatz dieser unkonventionellen Methoden können Entwickler ein tieferes Verständnis dafür erlangen, wie das Vorkommen bestimmter Teilzeichenfolgen effizient gezählt werden kann, und so aus Textdaten aussagekräftige Erkenntnisse gewinnen. Begleiten Sie uns auf dieser inspirierenden Reise, während wir das Potenzial der Leistungsfähigkeit von JavaScript freisetzen und unseren umfangreichen Wortschatz erweitern, um die Kunst der Berechnung passender Teilzeichenfolgen zu meistern.

Problemstellung

Wir benötigen eine JavaScript-Funktion, die Teilsequenzen in einer bestimmten Zeichenfolge zählt und eine Zeichenfolgeneingabe namens „str“ und ein Array von Zeichenfolgeneingaben namens „arr“ entgegennimmt. Das Ziel besteht darin, jedes Element in „arr“ zu untersuchen und die Anzahl der Zeichenfolgen zu bestimmen, die Teilsequenzen von „str“ sind. Eine Teilsequenz ist eine Zeichenfolge, die durch Entfernen von Zeichen aus der ursprünglichen Zeichenfolge unter Beibehaltung der relativen Reihenfolge der verbleibenden Zeichen gebildet wird. Die Funktion sollte jedes Element in „arr“ und „str“ sorgfältig vergleichen und feststellen, ob es durch Entfernen von Zeichen aus „str“ erstellt werden kann. Anschließend wird eine Ganzzahl zurückgegeben, die die Anzahl der in „str“ gefundenen qualifizierten Teilsequenzen darstellt.

Beispieleingabe -

str = 'abracadabra';
arr = ['a', 'bra', 'cad', 'dab'];
Nach dem Login kopieren

Beispielausgabe -

Output =4;
Nach dem Login kopieren

Ausgabebeschreibung -

In der gegebenen Eingabe ist die Zeichenfolge „str“ ​​„abracadabra“ und das Array „arr“ enthält ['a', 'bra', 'cad', 'dab'].

Bei der Analyse jedes Elements von „arr“ stellen wir fest, dass „a“, „bra“, „cad“ und „dab“ allesamt Teilfolgen von „str“ sind. Daher beträgt die Anzahl der Teilsequenzen 4, was der erwarteten Ausgabe entspricht.

Methode

In diesem Artikel werden wir verschiedene Möglichkeiten zur Lösung der oben genannten Probleme in JavaScript sehen -

  • Brute-Force-Cracking-Methode

  • Doppelzeigermethode

Methode 1: Brute-Force-Cracking

Ein Brute-Force-Ansatz zur Berechnung gültiger Teilsequenzen umfasst die Generierung aller möglichen Teilsequenzen einer Zeichenfolge und die Überprüfung ihrer Anwesenheit in einem Array. Wir iterieren über jede Zeichenfolge, erzeugen rekursiv oder mithilfe bitweiser Operationen Teilsequenzen und vergleichen sie mit den Array-Elementen. Der Zähler wird bei jedem Spiel erhöht und ergibt eine Gesamtzahl. Diese Methode ist für größere Eingaben rechenintensiv, sodass alternative Algorithmen wie dynamische Programmierung optimalere Lösungen bieten.

Beispiel

Dieser Code implementiert einen rekursiven Algorithmus, um die Anzahl der Teilsequenzen einer bestimmten Zeichenfolge (str) in einem Array von Zeichenfolgen (arr) zu zählen. Die Funktion countSubsequences initialisiert eine Zählvariable, um gültige Teilsequenzen zu verfolgen. Die Funktion „generateSubsequences“ generiert alle möglichen Teilsequenzen, indem sie die Eingabezeichenfolge durchläuft und prüft, ob jede Teilsequenz im Array vorhanden ist. Der rekursive Aufruf wird durchgeführt, um verschiedene Möglichkeiten zum Ein- oder Ausschließen von Zeichen zu untersuchen. Der Hauptfunktionsaufruf generiert eine Untersequenz beginnend am Anfang der Zeichenfolge. Als Endergebnis wird die Zählvariable zurückgegeben. Beispielverwendung demonstriert die Verwendung dieser Funktion mit Beispielzeichenfolgen und Zeichenfolgenarrays. Die Ergebnisse werden gespeichert und auf der Konsole ausgedruckt.

function countSubsequences(str, arr) {
   let count = 0;
 
   // Generate all possible subsequences of the input string
   function generateSubsequences(sub, index) {
      if (index === str.length) {
         // Check if the subsequence exists in the array
         if (arr.includes(sub)) {
            count++;
         }
         return;
      }
 
      // Include the current character in the subsequence
      generateSubsequences(sub + str[index], index + 1);
 
      // Exclude the current character from the subsequence
      generateSubsequences(sub, index + 1);
   }
 
   // Start generating subsequences from the beginning of the string
   generateSubsequences("", 0);
 
   return count;
}
 
// Example usage:
const str = "abcde";
const arr = ["a", "ab", "bd", "abc", "acde", "eab"];
const result = countSubsequences(str, arr);
console.log(result);
Nach dem Login kopieren

Ausgabe

Das Folgende ist die Konsolenausgabe -

5
Nach dem Login kopieren
Nach dem Login kopieren

Methode 2: Zwei-Zeiger-Methode

Der Algorithmus durchläuft jede Zeichenfolge im Array und verwendet zwei Zeiger, von denen einer auf die angegebene Zeichenfolge und der andere auf die aktuell untersuchte Zeichenfolge verweist. Diese Zeiger befinden sich zunächst am Anfangszeichen ihrer entsprechenden Zeichenfolgen und bewegen sich dann vorwärts, bis das Ende einer Zeichenfolge erreicht wird. Jedes Mal, wenn eine gültige Teilsequenz ermittelt wird, wird der numerische Indikator erhöht. Schließlich liefert der Algorithmus als Endergebnis den numerischen Wert des Indikators.

Beispiel

Die Funktion countValidSubsequences benötigt ein String-Array (arr) und einen Ziel-String (target) als Parameter. Es durchläuft jeden String in arr und vergleicht seine Zeichen mithilfe einer verschachtelten Schleife mit den Zeichen in target. Wenn die Zeichen übereinstimmen, wird der Index erhöht; wenn sie nicht übereinstimmen, wird nur der Index des Ziels erhöht. Wenn die gesamte Zeichenfolge eine gültige Teilsequenz ist, wird die Anzahl erhöht. Nachdem alle Zeichenfolgen in arr durchlaufen wurden, gibt die Funktion die endgültige Anzahl zurück.

function countValidSubsequences(arr, target) {
   let count = 0;
 
   for (let i = 0; i < arr.length; i++) {
      const current = arr[i];
      let j = 0;
      let k = 0;
 
      while (j < current.length && k < target.length) {
         if (current[j] === target[k]) {
            j++;
            k++;
         } else {
            k++;
         }
      }
 
      if (j === current.length) {
         count++;
      }
   }
 
   return count;
}
 
// Example usage: 
const str = "abcde"; 
const arr = ["a", "ab", "bd", "abc", "acde", "eab"]; 
const result = countValidSubsequences(arr, str); 
console.log(result);
Nach dem Login kopieren

Ausgabe

Das Folgende ist die Konsolenausgabe -

5
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

Letztendlich hat diese Untersuchung der passenden Substring-Zählung in JavaScript eine Reihe cleverer Techniken aufgedeckt, mit denen diese Aufgabe effizient erledigt werden kann. Durch den Einsatz verschiedener Algorithmen und die Nutzung der selten genutzten Funktionen der Sprache können Programmierer elegante und einfallsreiche Lösungen entwerfen. Es muss anerkannt werden, dass die Komplexität des Teilstring-Abgleichs eine sorgfältige Berücksichtigung von Randfällen und möglichen Auswirkungen auf die Leistung erfordert. Mit diesen neu gewonnenen Erkenntnissen können Entwickler jedoch über herkömmliche Ansätze hinausgehen und das volle Potenzial von JavaScript nutzen, um Teilzeichenfolgen geschickt aufzuzählen und zu manipulieren. Insgesamt ermöglicht das in diesem Artikel vermittelte fundierte Wissen Programmierern, ihre Codierungsfähigkeiten zu verbessern und neue Dimensionen der Substring-Zählung in JavaScript zu erschließen.

Das obige ist der detaillierte Inhalt vonBerechnen Sie passende Teilzeichenfolgen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Mar 18, 2025 pm 03:12 PM

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

Wie optimiere ich den JavaScript -Code für die Leistung im Browser? Wie optimiere ich den JavaScript -Code für die Leistung im Browser? Mar 18, 2025 pm 03:14 PM

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Apr 04, 2025 pm 02:42 PM

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Wie debugge ich den JavaScript -Code effektiv mithilfe von Browser -Entwickler -Tools? Wie debugge ich den JavaScript -Code effektiv mithilfe von Browser -Entwickler -Tools? Mar 18, 2025 pm 03:16 PM

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

Wie benutze ich Javas Sammlungsrahmen effektiv? Wie benutze ich Javas Sammlungsrahmen effektiv? Mar 13, 2025 pm 12:28 PM

In diesem Artikel wird der effektive Gebrauch des Sammlungsrahmens von Java untersucht. Es betont die Auswahl geeigneter Sammlungen (Liste, Set, Karte, Warteschlange) basierend auf Datenstruktur, Leistungsanforderungen und Thread -Sicherheit. Optimierung der Sammlungsnutzung durch effizientes Gebrauch

Wie verwende ich Quellkarten zum Debuggen, um den JavaScript -Code zu debuggen? Wie verwende ich Quellkarten zum Debuggen, um den JavaScript -Code zu debuggen? Mar 18, 2025 pm 03:17 PM

In dem Artikel wird erläutert, wie Quellkarten zum Debuggen von JavaScript verwendet werden, indem er auf den ursprünglichen Code zurückgegeben wird. Es wird erläutert, dass Quellenkarten aktiviert, Breakpoints eingestellt und Tools wie Chrome Devtools und WebPack verwendet werden.

Erste Schritte mit Chart.js: Kuchen-, Donut- und Bubble -Diagramme Erste Schritte mit Chart.js: Kuchen-, Donut- und Bubble -Diagramme Mar 15, 2025 am 09:19 AM

In diesem Tutorial wird erläutert, wie man mit Diagramm.js Kuchen-, Ring- und Bubble -Diagramme erstellt. Zuvor haben wir vier Chart -Arten von Charts gelernt. Erstellen Sie Kuchen- und Ringdiagramme Kreisdiagramme und Ringdiagramme sind ideal, um die Proportionen eines Ganzen anzuzeigen, das in verschiedene Teile unterteilt ist. Zum Beispiel kann ein Kreisdiagramm verwendet werden, um den Prozentsatz der männlichen Löwen, weiblichen Löwen und jungen Löwen in einer Safari oder den Prozentsatz der Stimmen zu zeigen, die verschiedene Kandidaten bei der Wahl erhalten. Kreisdiagramme eignen sich nur zum Vergleich einzelner Parameter oder Datensätze. Es ist zu beachten, dass das Kreisdiagramm keine Entitäten ohne Wert zeichnen kann, da der Winkel des Lüfters im Kreisdiagramm von der numerischen Größe des Datenpunkts abhängt. Dies bedeutet jede Entität ohne Anteil

Wer bekommt mehr Python oder JavaScript bezahlt? Wer bekommt mehr Python oder JavaScript bezahlt? Apr 04, 2025 am 12:09 AM

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

See all articles