Salam.
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"]; }
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++; }
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"]; }
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!