Date:2019-3-30
题目地址:https://leetcode-cn.com/problems/jewels-and-stones/
题目:
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
示例1:
输入:
J = “aA”, S = “aAAbbbb”
输出:
3
示例2:
输入:
J = “z”, S = “ZZ”
输出:
0
注意:
S和J最多含有50个字母。J中的字符不重复。
提示:For each stone, check if it is a jewel. 检查每个石头是否是宝石
考察点:字符串内取,另外一个字符串的每位的 关键字
解法:
const numJewelsInStones = (J, S) => {if (J.length > 50 || S.length > 50) {return 0}let total = 0// 方法 1 操作数组J.split('').forEach(key => {const itemTotal = S.split('').filter(item => item === key).lengthtotal += itemTotal})// 方法 2 正则匹配const Len = S.lengthJ.split('').forEach(key => {const stones = S.replace(new RegExp(key, 'g'), '')const itemTotal = Len - stones.lengthtotal += itemTotal})return total};
在实际中的应用场景:
在做字符串显示优化的时候可以用到此方法
例如,做了关键字筛选后,字体高亮部分的截取等。
