LeetCode(771) - Jewels and Stones

문제

문자열 jewelsstones가 주어진다. stones는 내가 가지고 있는 동의 종류들이고, jewels는 보석의 종류들이다. 내가 가지고 있는 돌들 중 보석이 몇개인지 반환하라.

입력

Input: jewels = "aA", stones = "aAAbbbb"

출력

Output: 3

설명

  1. stones는 중복이 가능하다.
  2. stonesjewels의 각 문자는 대소문자가 구분된다.

풀이

  1. stones를 순회하며 각 문자들을 mapkey로, 등장 횟수를 value로 저장한다.
  2. jewels를 순회하며 각 문자들을 map에서 검색 후 등장횟수들을 모두 카운트 후 반환한다.

코드

class Solution {
public:
    int numJewelsInStones(string jewels, string stones) {
        unordered_map<char, int> mp;
        for (char c : stones) {
            mp[c]++;
        }
        int ret = 0;
        for (char c : jewels) {
            if (mp.find(c) == mp.end())  continue;
            ret = ret + mp.find(c)->second;
        }
        return ret;
    }
};