Leetcode PHP題解--D1 771. Jewels and Stones
771. Jewels and Stones
由於是按難易度排序的,因此本題是第一題。
題目連結
題目分析
從第二個引數S
中找第一個引數J
中出現的字元,返回找到的字元個數。
也就是說,第一個引數J
是一個需要找的字元的列表。只是拼接成字串了。
而第二個引數S
是被查詢的字串。
簡單地說就是要在S
裡找J
。
先把問題簡化為J
中只有一個字元的情形,因為字串可以看作是一個字元陣列。
首先想到的是用array_filter 。可能很多人沒聽說過這個函式。
這個函式的作用就是,根據閉包函式,過濾陣列元素。
簡單地說就是刪除不需要的元素。
要注意$S
是字串,需要先轉換成陣列才行。
我們可以寫出這樣的程式碼:
$values = array_filter(str_split($S), function($val) use ($J){ return $val == $J; });
此時再延伸一下判斷條件:
$values = array_filter(str_split($S),function($var) use ($J){ if(in_array($var, str_split($J))){ return $var; } });
最後返回count($values)
即可。
最終程式碼
<?php class Solution { function numJewelsInStones($J, $S) { $keys = array_filter(str_split($S),function($var) use ($J){ if(in_array($var,str_split($J))){ return $var; } }); return count($keys); } }
若覺得本文章對你有用,歡迎用愛發電 資助。