class Solution:
def getFreq(Lst):
freq={}
for word in set(Lst):
tmp_freq={}
for letter in word:
tmp_freq[letter]=tmp_freq.get(letter,0)+1
for key,value in tmp_freq.items():
freq[key]=max(freq.get(key,0),value)
return(freq)
def wordSubsets(self, A: List[str], B: List[str]) -> List[str]:
B_freq=getFreq(B)
res=[]
for word in A:
a_freq=getFreq([word])
for key,value in B_freq.items():
if a_freq.get(key,0)>=value:
flag=True #flag指示该单词是否符合要求
else:
flag=False
break
if flag:
res.append(word)
return(res)
1.记录B中每个单词中各字母出现的频数,当有多个单词的字母出现重复时,只记录其最大频数;
2.遍历A中每个单词,记录每个单词各字母出现的频数:
若B中的字母出现在A中,且A中该字母的频数大于等于B中该字母出现的频数,将此单词记录在结果中