寶石與石頭 leetcode刷題 000

2021-09-20 02:13:00 字數 1480 閱讀 2724

題目:

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

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

示例 1:

輸入:j = "aa", s = "aaabbbb"輸出:3

示例 2:

輸入:j = "z", s = "zz"輸出:0

注意:

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

j 中的字元不重複。

解答:

看到這個題目,我第一反應是用兩層迴圈遍歷,外層遍歷s,內層遍歷j。因為j中元素不重複,放在內層,這樣外層s中的元素逐一與s比較,相等計數就加一,然後返回計數結果。說幹就幹:

class solution(object):

def numjewelsinstones(self, j, s):

:type j: str

:type s: str

:rtype: int

count =0

for s in s:

for j in j:

if s == j:

count +=1

return(count)

執行之後,用時44s,這個成績在大家提交的**中排名如何呢?

戰勝93.68%的python使用者,一定還有更加優秀的**,咱們一睹為快:

網友答案一:

class solution(object):

def numjewelsinstones(self, j, s):

:type j: str

:type s: str

:rtype: int

count =0

for c in s:

if c inj: 

count +=1

return count

這個是執行時間24s的例子,可以看到,只用了一層迴圈,也是可以得到答案,跟我們的思路一樣。

還有跟我們思路不一樣的:

網友答案二

class solution(object):

def numjewelsinstones(self, j, s):

:type j: str

:type s: str

:rtype: int

return sum([i in j for i in s])

看一下,這個是說有乙個元素「i」同時在j和s中,之後再統計它的數量,這個也是可以得到答案。用時32s。

當然這個題比較簡單,相信你也能解答出來,簡單的問題尋求最優解才是我們的目的。希望跟你一起進步。

每日刷題 寶石與石頭

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

LeetCode 寶石與石頭

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

LeetCode 寶石與石頭

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