Skip to content

Latest commit

 

History

History
102 lines (82 loc) · 2.33 KB

File metadata and controls

102 lines (82 loc) · 2.33 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:
        s = set(jewels)
        return sum([1 for c in stones if c in s])

Java

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

C++

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

Go

func numJewelsInStones(jewels string, stones string) int {
	s := make(map[rune]bool)
	for _, c := range jewels {
		s[c] = true
	}
	res := 0
	for _, c := range stones {
		if s[c] {
			res++
		}
	}
	return res
}

...