寶石與石頭

2021-10-10 05:40:32 字數 1624 閱讀 4124

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