LeetCode 916 單詞子集

2021-08-28 17:02:43 字數 1690 閱讀 2119

我們給出兩個單詞陣列ab。每個單詞都是一串小寫字母。

現在,如果b中的每個字母都出現在a中,包括重複出現的字母,那麼稱單詞b是單詞a的子集。 例如,「wrr」 是 「warrior」 的子集,但不是 「world」 的子集。

如果對b中的每乙個單詞bb都是a的子集,那麼我們稱a中的單詞a是通用的。

你可以按任意順序以列表形式返回a中所有的通用單詞。

示例 1:

輸出:["facebook","google","leetcode"]

示例 2:

示例 3:

輸出:["facebook","google"]

示例 4:

輸出:["google","leetcode"]

示例 5:

輸出:["facebook","leetcode"]

本題要求 對 b 中的每乙個單詞 b,b 都是 a 的子集。那麼b中某乙個字母出現幾次,在a中也至少要有幾次。對於多個b,某一單詞出現的次數取最多的一次。

對於所有的b,採用乙個雜湊陣列bhash統計每個字母出現的次數。對單個b,通過雜湊陣列bhash統計在這個單詞中每個字母出現的次數。在統計完後與總數組bhash進行比對,保留較大的值。

當所有b遍歷完後獲得最終的bhash,與每乙個a的雜湊陣列進行比對即可。

class solution:

def wordsubsets(self, a, b):

""":type a: list[str]

:type b: list[str]

:rtype: list[str]

"""bhash = {}

for str in b:

bhash = {}

for s in str:

if not s in bhash:

bhash[s] = 1

else: bhash[s] +=1

for i in bhash:

if not i in bhash:

bhash[i] = bhash[i]

else : bhash[i] = max(bhash[i],bhash[i])

res =

for str in a:

ahash = {}

flag = 1

for s in str:

if not s in ahash:

ahash[s] = 1

else: ahash[s] +=1

for i in bhash:

if not i in ahash:

flag = 0

break

elif ahash[i] < bhash[i]:

flag = 0

break

if flag == 0:

continue

else :

return res

leetcode 916 單詞子集

我們給出兩個單詞陣列a和b。每個單詞都是一串小寫字母。現在,如果b中的每個字母都出現在a中,包括重複出現的字母,那麼稱單詞b是單詞a的子集。例如,wrr 是 warrior 的子集,但不是 world 的子集。如果對b中的每乙個單詞b,b都是a的子集,那麼我們稱a中的單詞a是通用的。你可以按任意順序...

LeetCode 916 單詞子集(計數)

我們給出兩個單詞陣列 a 和 b。每個單詞都是一串小寫字母。現在,如果 b 中的每個字母都出現在 a 中,包括重複出現的字母,那麼稱單詞 b 是單詞 a 的子集。例如,wrr 是 warrior 的子集,但不是 world 的子集。如果對 b 中的每乙個單詞b,b都是a 的子集,那麼我們稱 a 中的...

LeetCode 916 單詞子集 中等

我們給出兩個單詞陣列 a 和 b。每個單詞都是一串小寫字母。現在,如果 b 中的每個字母都出現在 a 中,包括重複出現的字母,那麼稱單詞 b 是單詞 a 的子集。例如,wrr 是 warrior 的子集,但不是 world 的子集。如果對 b 中的每乙個單詞 b,b 都是 a 的子集,那麼我們稱 a...