771. Jewels and Stones

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.
  • All the characters of jewels are unique.

Rust Solution

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);
}

Having problems with this solution? Click here to submit an issue on github.