leetcode 771题 JavaScript算法思路 珠宝和石头 Jewels and Stones

in js 代码 with 0 comment

1. 问题描述:

输入 J (jewels) 代表珠宝, S (stone) 代表石头, 要从石头S里面挑选出J珠宝

示例:

Example 1:
输入: J = "aA", S = "aAAbbbb" 输出: 3
Example 2:
输入: J = "z", S = "ZZ"
输出: 0


其实就是算 S 中, J 所有字符的出现次数. 然后我的思路是....

2. 算法思路:

为了找到 S 中, J 每个字符的数量, 可以将每个 J 字符分割, 然后循环, 循环次数为分割后的数组, 比如example1, 的循环次数就是2, 而example 2的循环次数为1

循环体内, 先用indexOf 判定元素是否存在, 不存在就直接跳过循环,

存在就用正则表达式, 来进行匹配, 匹配到 count+= 匹配到的数量

最后返回 count 就可以了

3. 代码!

光说不练假把式, 这里是代码

/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    var tmp=J.split("");
    var count=0;
    
    for (var i=0;i<tmp.length;i++){
        if(S.indexOf(J[i])==-1){
            continue;
        }
        var Reg=new RegExp(tmp[i],'g');
        count+=S.match(Reg).length;
    }
    return count;
};

提交通过, https://leetcode.com/submissions/detail/246208595/

Responses