宝石与石头
给你一个字符串 jewels
代表石头中宝石的类型,另有一个字符串 stones
代表你拥有的石头。 stones
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 "a"
和 "A"
是不同类型的石头。
示例 1:
输入: jewels = "aA", stones = "aAAbbbb"
输出: 3
示例 2:
输入: jewels = "z", stones = "ZZ"
输出: 0
解题思路
暴力破解:我们可以把宝石jewels
转化为数组,看看有几种类型的宝石;再把石头转化为数组,然后 采用双重循环挨个进行判断是不是属于宝石;但是这种方法费时费力
优化一下我们可以使用筛选
这个api,先把石头转化为数组,然后筛选属于宝石的部分,最后得出一个数组,这个数组就是宝石的个数
其实只需要一行代码就能搞定,为了方便阅读,还是写两行吧
具体步骤如下:
- 第一步:把石头转化为数组,进行筛选
- 第二步: 如果当前元素属于宝石,那么就是我们需要的元素,最后的结果会返回一个数组
- 第三步: 返回结果的长度;
var numJewelsInStones = function(jewels, stones) { let result = stones.split('').filter(item=> jewels.includes(item)) return result.length };
知识点
split()
:于把一个字符串按照要求分割成字符串数组filter()
方法创建数组,其中填充了所有通过测试的数组元素;它不会改变原始数组。而是返回一个新数组
明出处。