Skip to content

Latest commit

 

History

History
84 lines (66 loc) · 2.23 KB

File metadata and controls

84 lines (66 loc) · 2.23 KB

中文文档

Description

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.

Solutions

Python3

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        jewel_set = {c for c in jewels}
        return sum([1 for c in stones if c in jewel_set])

Java

class Solution {
    public int numJewelsInStones(String jewels, String stones) {
        Set<Character> jewelSet = new HashSet<>();
        for (char ch : jewels.toCharArray()) {
            jewelSet.add(ch);
        }
        int res = 0;
        for (char ch : stones.toCharArray()) {
            res += (jewelSet.contains(ch) ? 1 : 0);
        }
        return res;
    }
}

C++

class Solution {
public:
    int numJewelsInStones(string jewels, string stones) {
        unordered_set<char> jewelsSet;
        for (int i = 0; i < jewels.length(); ++i) {
            jewelsSet.insert(jewels[i]);
        }
        int res = 0;
        for (int i = 0; i < stones.length(); ++i) {
            res += jewelsSet.count(stones[i]);
        }
        return res;
    }
};

...