## Problem

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.

## Solution

Convert the list of jewels J to hash table, then iterate through S, lookup in hash-table with O(n) time.

```
class Solution {
func numJewelsInStones(_ J: String, _ S: String) -> Int {
let searchTable = Set(Array(J))
var res = 0
for s in S {
if searchTable.contains(s) { res += 1 }
}
return res
}
}
```