【Leetcode_總結】 916. 單詞子集 - python
阿新 • • 發佈:2018-12-31
Q:
我們給出兩個單詞陣列 A
和 B
。每個單詞都是一串小寫字母。
現在,如果 b
中的每個字母都出現在 a
中,包括重複出現的字母,那麼稱單詞 b
是單詞 a
的子集。 例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。
如果對 B
中的每一個單詞 b
,b
都是 a
的子集,那麼我們稱 A
中的單詞 a
是通用的。
你可以按任意順序以列表形式返回 A
示例 1:
輸入:A = ["amazon","apple","facebook","google","leetcode"], B = ["e","o"] 輸出:["facebook","google","leetcode"]
示例 2:
輸入:A = ["amazon","apple","facebook","google","leetcode"], B = ["l","e"] 輸出:["apple","google","leetcode"]
連結:https://leetcode-cn.com/problems/word-subsets/description/
思路:其實就是統計B中,每個序列中出現的字元頻率最高的,然後通過A中的詞去比較一下,字元頻率是否超過字典中的
程式碼:
class Solution: def wordSubsets(self, A, B): """ :type A: List[str] :type B: List[str] :rtype: List[str] """ res = [] dic = {} for letter_ in B: for letter in letter_: if letter in dic: if letter_.count(letter) > dic[letter]: dic[letter] = letter_.count(letter) else: dic[letter] = 1 for voc in A: count = 0 for letter in dic: if voc.count(letter) >= dic[letter]: count += 1 if count == len(dic): res.append(voc) return res