雜湊 簡單 771 寶石與石頭

2021-10-21 07:22:07 字數 1590 閱讀 1039

【題目】

給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。 s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。

j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此"a"和"a"是不同型別的石頭。

【示例 1】

輸入: j = 「aa」, s = 「aaabbbb」

輸出: 3

【示例 2】

輸入: j = 「z」, s = 「zz」

輸出: 0

【注意】

s 和 j 最多含有50個字母。

j 中的字元不重複。

【**】

【python】

【方法1:使用資料結構dict】

class

solution

:def

numjewelsinstones

(self, jewels:

str, stones:

str)

->

int:

cnt=

dict

(counter(stones)

) c=

0for key in cnt:

if key in jewels:

c+=cnt[key]

return c

【方法2:最質樸的方式】遍歷stones字串,挨個字元判斷是否存在於jewels中

class

solution

:def

numjewelsinstones

(self, jewels:

str, stones:

str)

->

int:

c=0for s in stones:

if s in jewels:

c+=1return c

【方法3:一行**】

class

solution

:def

numjewelsinstones

(self, jewels:

str, stones:

str)

->

int:

return

sum(s in jewels for s in stones)

【方法4:使用資料結構set】

執行用時:

32 ms, 在所有 python3 提交中擊敗了95.04%的使用者

記憶體消耗:

14.8 mb, 在所有 python3 提交中擊敗了50.38%的使用者

class

solution

:def

numjewelsinstones

(self, jewels:

str, stones:

str)

->

int:

jewelsset =

set(jewels)

return

sum(s in jewelsset for s in stones)

771 寶石與石頭

給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3...

771 寶石與石頭

給定字串j代表石頭中寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j和s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3示例 2 輸...

771寶石與石頭

給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3...