Skip to content

Latest commit

 

History

History
42 lines (35 loc) · 1.32 KB

File metadata and controls

42 lines (35 loc) · 1.32 KB

771. Jewels and Stones

You're given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character in S is a type of stone you have. You want to know how many of the stones you have are also jewels.

The letters in J are guaranteed distinct, and all characters in J and S are 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:

  • S and J will consist of letters and have length at most 50.
  • The characters in J are distinct.

Solutions (Rust)

1. HashMap

use std::collections::HashMap;

impl Solution {
    pub fn num_jewels_in_stones(j: String, s: String) -> i32 {
        let mut jewels = HashMap::new();
        for ch_j in j.chars() {
            jewels.insert(ch_j, 0);
        }
        for ch_s in s.chars() {
            if let Some(i) = jewels.get(&ch_s) {
                jewels.insert(ch_s, i + 1);
            }
        }
        jewels.values().sum()
    }
}