題目:
給定字串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...