Jewels and Stones

You're given stringsJrepresenting the types of stones that are jewels, andSrepresenting the stones you have. Each character inSis a type of stone you have. You want to know how many of the stones you have are also jewels.

The letters inJare guaranteed distinct, and all characters inJandSare letters. Letters are case sensitive, so"a"is considered a different type of stone from"A".

Example 1:

Input: J = "aA", S = "aAAbbbb"
Output: 3

Example 2:

Input: J = "z", S = "ZZ"
Output: 0

Note:

  • SandJwill consist of letters and have length at most 50.

  • The characters inJare distinct.

Here is a solution.

class Solution {
    public int numJewelsInStones(String J, String S) {
        // create set of jewels and then iterate through S, and check if a letter is jewel, if yes, increment counter
        Set<Character> jewels = J.chars()
            .mapToObj(c -> (char) c)
            .collect(Collectors.toSet());

        int count = 0;
        for (int i = 0; i < S.length(); i++) {
            if (jewels.contains(S.charAt(i))) {
                count++;
            }
        }
        return count;
    }
}

Last updated