[LeetCode] 771. Jewels and Stones | Blurred code

[LeetCode] 771. Jewels and Stones

panda

2019/01/09

Updated:2019/01/09

Categories: LeetCode

771. Jewels and Stones Easy 给定两个字符串J和S,分别代表钻石和石头。找出石头中钻石的数量。字符串大小写敏感

Example 1: Input: J = “aA”, S = “aAAbbbb” Output: 3

Example 1: Input: J = “z”, S = “ZZ” Output: 0

class Solution {
public:
    /* 删除掉石头里的非钻石,再返回剩余的数量,就是钻石的数量
     *(1) std::remove_if和std::remove是容易引起误会的一个标准库函数,它实质上是将满足条件的值置后
     * 最后的返回值是一个迭代器,指向最后一个不满足条件的容器元素
     * 如果要删除元素,需要和std::erase进行搭配
     *(2) std::string::npos是一个负值,往往以-1实现,它常用在find函数里代表string类的结尾
     *(3) 对std::find()和std::string::find()进行区分
      
    */
    int numJewelsInStones(string J, string S) {
        S.erase(remove_if(S.begin(),
                          S.end(),
                          [&J](const char& _letter){return (J.find(_letter,0)==string::npos);}),
                S.end());
        return S.size();
    }

};