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
andJ
will consist of letters and have length at most 50. - The characters in
J
are distinct.
class Solution(object):
def numJewelsInStones(self, J, S):
"""
:type J: str
:type S: str
:rtype: int
out("", "")=0
out("", "A")=0
out("A", "")=0
out("AB", "C")=0
out("C", "AB")=0
out("AB", "AB")=0
out("ABC", "DEF")=0
out("ABC", "ABc")=2
out("ABC", "ABCD")=3
"""
'''
if not J:
return 0
jewels = set()
for j in J:
jewels.add(j)
ans = 0
for s in S:
if s in jewels:
ans += 1
return ans
'''
setJ = set(J)
return sum(s in setJ for s in S)
时间复杂度O(S+J) 空间复杂度 O(S+J)
注: sum([True, False, True])==2
标签:Stones,stones,AB,771,jewels,letters,type,leetcode,out From: https://blog.51cto.com/u_11908275/6381162