Pembahagi Biasa Terhebat Rentetan dalam Javascript

Linda Hamilton
Lepaskan: 2024-11-21 07:11:10
asal
612 orang telah melayarinya

Greatest Common Divisor of Strings in Javascript
Hari ini, saya menyelesaikan masalah kedua siri LeetCode 75. Saya ingin berkongsi cara saya menghadapi masalah ini.

Pernyataan Masalah:
Anda diberi dua rentetan, str1 dan str2. Kembalikan rentetan terbesar x supaya x membahagikan kedua-dua str1 dan str2.

Contoh:

Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"

Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"

Input: str1 = "LEET", str2 = "CODE"
Output: ""
**
Pendekatan Saya**

Saya membahagikan penyelesaian saya kepada tiga bahagian:

Semak sama ada rentetan pembahagi biasa wujud:
Mula-mula, saya menyemak sama ada pembahagi sepunya wujud dengan menggabungkan str1 str2 dan str2 str1.

Jika dua rentetan bercantum tidak sama, ini bermakna tiada pembahagi sepunya dan fungsi mengembalikan rentetan kosong ("").

Cari panjang GCD:
Seterusnya, saya dapati GCD bagi panjang str1 dan str2.

Saya menggunakan fungsi gcd() rekursif. Jika b !== 0, fungsi memanggil dirinya secara rekursif dengan dua argumen:
gcd(a, b) = gcd(b, a % b)
Setelah b = 0, fungsi mengembalikan a, iaitu panjang GCD.

Contoh Pengiraan:

Panggilan Permulaan: gcd(6, 3)
Oleh kerana b = 3 bukan 0, ia secara rekursif memanggil gcd(3, 6 % 3) → gcd(3, 0)

Panggilan Kedua: gcd(3, 0)
Sekarang b = 0, jadi fungsi mengembalikan 3.

Ekstrak subrentetan GCD:
Akhir sekali, saya mengekstrak subrentetan daripada str1 menggunakan 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: ""

Salin selepas log masuk

Jika anda mempunyai penyelesaian atau idea yang lebih baik, sila berkongsi dengan saya.

Atas ialah kandungan terperinci Pembahagi Biasa Terhebat Rentetan dalam Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan