Rumah > hujung hadapan web > tutorial js > Codewars - Mengira Pendua

Codewars - Mengira Pendua

Susan Sarandon
Lepaskan: 2025-01-04 19:21:41
asal
313 orang telah melayarinya

Salam.

Codewars - Counting Duplicates

Saya menyiarkan cabaran Codewars dan proses pemikiran saya dalam siri ini. Saya menggunakan JS dan Node 18 apabila boleh. Hanya demi kejelasan, saya menggunakan mereka secara adil.

Untuk cabaran "Mengira pendua", saya akan mulakan dengan ini:

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"max":0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      countTotal[letter] = countTotal[letter] ? countTotal[letter]++ : 1;
      if (countTotal[letter] > countTotal["max"]){
        countTotal["max"] = countTotal[letter];
      }
    }
  }
  return countTotal["max"];
}
Salin selepas log masuk

Nampak... bertele-tele. Tertanya-tanya jika banyak perkataan ini sebenarnya bertujuan ke arah yang betul. Saya akan memberi anda sedikit masa jika anda mahu berfikir sendiri.

3...

2...

1...

1/2...

1/4...

Ok, saya rasa cukuplah. Tidak. Slang dari Kawasan Teluk telah memasuki web, jadi jika boleh: Ini hella salah.

Perkaranya, saya cuba mencari berapa banyak pendua surat yang paling banyak pendua yang ada. Ternyata kita perlu menjawab berapa banyak pendua jenis yang ada. Kes tidak sensitif.

AbC -> 0 -> tiada huruf berulang
AbCC -> 1 -> "C" berulang, kami tidak kisah berapa kali
AbBCC -> 2 -> "b" dan "c" ulang, kami tidak kisah berapa kali atau selongsongnya

Kita boleh memanfaatkan literal objek dalam JS untuk mencipta pembilang bagi setiap huruf. Kemudian, satu sifat boleh menjadi "pengulangan", yang akan menjadi pembilang yang naik SAHAJA apabila surat muncul dua kali.

if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
Salin selepas log masuk

Penyelesaian penuh:

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"repetitions": 0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      (countTotal[letter] === undefined) ? countTotal[letter] = 0 : null;
      countTotal[letter]++;
      if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
    }
  }
  return countTotal["repetitions"];
}
Salin selepas log masuk

Mengambil sedikit masa, ia boleh diperbaiki.

Jaga diri. Minum air ???.

Sebelumnya

Atas ialah kandungan terperinci Codewars - Mengira Pendua. 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