給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。 s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。
j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此"a"和"a"是不同型別的石頭。
示例 1:
輸入: j = "aa", s = "aaabbbb"
輸出: 3
示例 2:
輸入: j = "z", s = "zz"
輸出: 0
注意:s 和 j 最多含有50個字母。
j 中的字元不重複。
1) 雙迴圈 ——for
重複比較。
class solution:
def __init__(self):
pass
def numjewelsinstones(self, j: str, s: str) -> int:
a=0for m in j:
for n in s:
if m==n:
a+=1
return a
2) str.count()函式
str型別內建函式。
class solution:
def numjewelsinstones(self, j: str, s: str) -> int:
a=0for m in j:
if s.count(m)>0:
a+=s.count(m)
return a
3) stack棧
與雙迴圈類似,比較完後stack逐步清空。
class solution:
def numjewelsinstones(self, j: str, s: str) -> int:
a=0stack=list(s)
while len(s)>0:
s=stack.pop()
if s in j:
a+=1
return a
4) 排序
比較排序後的資料,模擬快速排序從兩邊界向中間比較的方法。
"""
@author: mr.n
@date: 2020/11/10 11:31pm tuesday
"""class solution:
def numjewelsinstones(self, j: str, s: str) -> int:
a=0
j=sorted(list(j))
s=sorted(list(s))
low=0
high=len(j)-1
left=0
right=len(s)-1
while low<=high and left<=right:
if j[low]s[left]:
left+=1
else:
a+=1
left+=1
if lefts[right]:
high-=1
else:
a+=1
right-=1
return a
python寶石與石頭 771 寶石與石頭
給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3...
寶石與石頭
題目描述 給定字串j代表石頭中寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j?和?s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 ...
寶石與石頭
給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3...