给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。
2、解题思路
直接统计字母表 chars 中每个字母出现的次数,然后检查词汇表 words 中的每个单词,如果该单词中每个字母出现的次数都小于等于词汇表中对应字母出现的次数,就将该单词长度加入答案中。
3、代码
class Solution(object):
def countCharacters(self, words, chars):
"""
:type words: List[str]
:type chars: str
:rtype: int
"""
import collections
ans = 0
#统计chars中的每个字母出现的次数
cnt = collections.Counter(chars)
#统计words中每一个单词中每个字母出现的次数
for word in words:
#同样采用Counter计数
c = collections.Counter(word)
if all(c[i]<=cnt[i] for i in c):
ans += len(word)
return ans