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:
s = set(jewels)
return sum([1 for c in stones if c in s])
class Solution {
public int numJewelsInStones(String jewels, String stones) {
Set<Character> s = new HashSet<>();
for (char c : jewels.toCharArray()) {
s.add(c);
}
int res = 0;
for (char c : stones.toCharArray()) {
res += (s.contains(c) ? 1 : 0);
}
return res;
}
}
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
unordered_set<char> s;
for (char c : jewels) {
s.insert(c);
}
int res = 0;
for (char c : stones) {
res += s.count(c);
}
return res;
}
};
func numJewelsInStones(jewels string, stones string) int {
s := make(map[rune]bool)
for _, c := range jewels {
s[c] = true
}
res := 0
for _, c := range stones {
if s[c] {
res++
}
}
return res
}