---
title: 【LeetCode】0771. Jewels and Stones
date: 2019-01-03
is_modified: false
disqus: cynthiahackmd
categories:
- "面試刷題"
tags:
- "LeetCode"
---
{%hackmd @CynthiaChuang/Github-Page-Theme %}
<br>
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".
<!--more-->
<br>
**Example 1:**
```python
Input: J = "aA", S = "aAAbbbb"
Output: 3
```
**Example 2:**
```python
Input: J = "z", S = "ZZ"
Output: 0
```
<br>
> **Note:**
>- `S` and `J` will consist of letters and have length at most 50.
> - The characters in `J` are distinct.
<br>
**Related Topics:** `Hash Table`
## 解題邏輯與實作
還滿簡單的一題,連想都不太需要想。題目翻譯成白話文是這樣的,給定兩個字串 J 與 S,檢查字串 S 中有多少字元屬於字串 J。不用管它寶石還石頭啦 XD
<br>
這題用暴力法逐一搜索就好了,為了改善時間複雜度,我將 J 放入 HashSet 中
```python=
class Solution:
def numJewelsInStones(self, J, S):
J = set(J)
counter = [c for c in S if c in J]
return len(counter)
```
<br>
程式碼可以進一使用 map 來化簡
```python=
class Solution:
def numJewelsInStones(self, J, S):
return(sum(map(J.count,S)))
```
## 其他連結
1. [【LeetCode】0000. 解題目錄](/x62skqpKStKMxRepJ6iqQQ)
<br><br>
> **本文作者**: 辛西亞.Cynthia
> **本文連結**: [辛西亞的技能樹](https://cynthiachuang.github.io/LeetCode-0771-Jewels-and-Stones) / [hackmd 版本](https://hackmd.io/@CynthiaChuang/LeetCode-0771-Jewels-and-Stones)
> **版權聲明**: 部落格中所有文章,均採用 [姓名標示-非商業性-相同方式分享 4.0 國際](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en) (CC BY-NC-SA 4.0) 許可協議。轉載請標明作者、連結與出處!