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
and stones
consist of only English letters.jewels
are unique.struct Solution;
use std::collections::HashSet;
impl Solution {
fn num_jewels_in_stones(j: String, s: String) -> i32 {
let mut hs: HashSet<char> = HashSet::new();
for c in j.chars() {
hs.insert(c);
}
let mut res = 0;
for c in s.chars() {
if hs.contains(&c) {
res += 1;
}
}
res
}
}
#[test]
fn test() {
let j = "aA".to_string();
let s = "aAAbbbb".to_string();
assert_eq!(Solution::num_jewels_in_stones(j, s), 3);
let j = "z".to_string();
let s = "ZZ".to_string();
assert_eq!(Solution::num_jewels_in_stones(j, s), 0);
}