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