You're given strings jewels
representing the types of stones that are jewels, and stones
representing the stones you have. Each character in stones
is a type of stone you have. You want to know how many of the stones you have are also jewels.
Letters are case sensitive, so "a"
is considered a different type of stone from "A"
.
Example 1:
Input: jewels = "aA", stones = "aAAbbbb" Output: 3
Example 2:
Input: jewels = "z", stones = "ZZ" Output: 0
Constraints:
1 <= jewels.length, stones.length <= 50
jewels
andstones
consist of only English letters.- All the characters of
jewels
are unique.
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
jewel_set = {c for c in jewels}
return sum([1 for c in stones if c in jewel_set])
class Solution {
public int numJewelsInStones(String jewels, String stones) {
Set<Character> jewelSet = new HashSet<>();
for (char ch : jewels.toCharArray()) {
jewelSet.add(ch);
}
int res = 0;
for (char ch : stones.toCharArray()) {
res += (jewelSet.contains(ch) ? 1 : 0);
}
return res;
}
}
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
unordered_set<char> jewelsSet;
for (int i = 0; i < jewels.length(); ++i) {
jewelsSet.insert(jewels[i]);
}
int res = 0;
for (int i = 0; i < stones.length(); ++i) {
res += jewelsSet.count(stones[i]);
}
return res;
}
};