Penerangan Masalah
Berikan dua rentetan:
mewakili jenis permata, mewakili batu yang anda miliki. jewels
Setiap watak mewakili beberapa jenis batu yang anda miliki. Anda perlu mengira berapa banyak permata di dalam batu yang anda miliki. stones
stones
huruf huruf, jadi "a" dan "a" mewakili pelbagai jenis batu.
Kunci masalah
Cari watak dalam rentetan dalam rentetan
, dan kembalikan jumlah aksara ini.
jewels
Contoh 1 stones
Contoh 2
<code>输入:jewels = "aA", stones = "aAAbbbb" 输出:3</code>
Keadaan Kekangan
<code>输入:jewels = "z", stones = "ZZ" 输出:0</code>
≤ 50 dan
hanya termasuk huruf bahasa Inggeris.jewels.length
stones.length
jewels
stones
jewels
Inisialisasi kaunter traversed rentetan, dan gunakan kaedah untuk memeriksa sama ada setiap aksara berada dalam rentetan .
/** * @param {string} jewels * @param {string} stones * @return {number} */ var numJewelsInStones = function(jewels, stones) { let count = 0; for (let i = 0; i < stones.length; i++) { if (jewels.includes(stones[i])) { count++; } } return count; };
.
count
stones
. Kerana <对> kaedah melintasi setiap aksara pada rentetan includes()
. Apabila skala input meningkat, kaedah ini tidak cekap. Kita perlu mengoptimumkan rancangan untuk mengurangkan kerumitan masa. jewels
count
count
stones
Gunakan <符> rentetan untuk membuat jewels
. includes()
Gunakan jadual hash untuk mencari carian yang lebih cepat. jewels
untuk memeriksa sama ada setiap watak berada dalam .
Jika ia wujud, ia akan meningkat/** * @param {string} jewels * @param {string} stones * @return {number} */ var numJewelsInStones = function(jewels, stones) { const jewelsSet = new Set(jewels); let count = 0; for (let i = 0; i < stones.length; i++) { if (jewelsSet.has(stones[i])) { count++; } } return count; };
kembali terakhir .
count
jewels
rentetan melalui aksara satu demi satu. Set
Set
dan jadual hach di dalam struktur data, yang membolehkan penggunaan stones
. has()
Jika saya mempunyai sebarang kesilapan atau anda mempunyai pandangan yang berbeza, sila tinggalkan mesej pada bila -bila masa. Saya sentiasa gembira untuk belajar dari perspektif yang berbeza! ? Jika anda suka artikel ini, sila hubungi saya di LinkedIn pada bila -bila masa.
Atas ialah kandungan terperinci [Algoritma] . Permata dan Batu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!