Heim > Web-Frontend > js-Tutorial > Größter gemeinsamer Teiler von Strings in Javascript

Größter gemeinsamer Teiler von Strings in Javascript

Linda Hamilton
Freigeben: 2024-11-21 07:11:10
Original
652 Leute haben es durchsucht

Greatest Common Divisor of Strings in Javascript
Heute habe ich das zweite Problem der LeetCode 75-Serie gelöst. Ich möchte mitteilen, wie ich dieses Problem angegangen bin.

Problemstellung:
Sie erhalten zwei Zeichenfolgen, str1 und str2. Gibt die größte Zeichenfolge x zurück, sodass x sowohl str1 als auch str2 teilt.

Beispiele:

Eingabe: str1 = „ABCABC“, str2 = „ABC“
Ausgabe: „ABC“

Eingabe: str1 = „ABABAB“, str2 = „ABAB“
Ausgabe: „AB“

Eingabe: str1 = „LEET“, str2 = „CODE“
Ausgabe: „“
**
Mein Ansatz**

Ich habe meine Lösung in drei Teile geteilt:

Überprüfen Sie, ob eine gemeinsame Teilerzeichenfolge vorhanden ist:
Zuerst überprüfe ich, ob ein gemeinsamer Teiler existiert, indem ich str1 str2 und str2 str1 verkette.

Wenn die beiden verketteten Zeichenfolgen nicht gleich sind, bedeutet dies, dass es keinen gemeinsamen Teiler gibt und die Funktion eine leere Zeichenfolge ("") zurückgibt.

Ermitteln Sie die GCD-Länge:
Als nächstes finde ich den GCD der Längen von str1 und str2.

Ich verwende eine rekursive gcd()-Funktion. Wenn b !== 0, ruft sich die Funktion rekursiv mit zwei Argumenten auf:
gcd(a, b) = gcd(b, a % b)
Sobald b = 0 ist, gibt die Funktion a zurück, was der GCD-Länge entspricht.

Beispielrechnung:

Erster Aufruf: gcd(6, 3)
Da b = 3 nicht 0 ist, wird gcd(3, 6 % 3) → gcd(3, 0)

rekursiv aufgerufen

Zweiter Aufruf: gcd(3, 0)
Jetzt ist b = 0, also gibt die Funktion 3 zurück.

GCD-Teilzeichenfolge extrahieren:
Zum Schluss extrahiere ich den Teilstring aus str1 mit gcdlength.

function gcdOfStrings(str1, str2) {
  // recursive function to calculate the GCD of two numbers
  function gcd(a, b) {
    console.log(a, b);
    return b === 0 ? a : gcd(b, a % b);
  }

  // Step 1: Check if str1 and str2 match or not
  if (str1 + str2 !== str2 + str1) {
    return ""; // No common pattern exists
  }

  // Step 2: Find the GCD of the lengths of str1 and str2
  const len1 = str1.length;
  const len2 = str2.length;
  const gcdLength = gcd(len1, len2);

  // Step 3: The largest divisor substring
  return str1.substring(0, gcdLength);
}

// Example usage:
console.log(gcdOfStrings("ABCABC", "ABC")); // Output: "ABC"
console.log(gcdOfStrings("ABABAB", "ABAB")); // Output: "AB"
console.log(gcdOfStrings("LEET", "CODE")); // Output: ""

Nach dem Login kopieren

Wenn Sie bessere Lösungen oder Ideen haben, können Sie diese gerne mit mir teilen.

Das obige ist der detaillierte Inhalt vonGrößter gemeinsamer Teiler von Strings in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage