拼写单词
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
注意:每次拼写时,chars 中的每个字母都只能用一次。
返回词汇表 words 中你掌握的所有单词的 长度之和。
示例 1:
输入:words = [“cat”,“bt”,“hat”,“tree”], chars = “atach”
输出:6
解释:
可以形成字符串 “cat” 和 “hat”,所以答案是 3 + 3 = 6。
示例 2:
输入:words = [“hello”,“world”,“leetcode”], chars = “welldonehoneyr”
输出:10
解释:
可以形成字符串 “hello” 和 “world”,所以答案是 5 + 5 = 10。
解题思路:
直接统计字母表 chars 中每个字母出现的次数,然后检查词汇表 words 中的每个单词,如果该单词中每个字母出现的次数都小于等于词汇表中对应字母出现的次数,就将该单词长度加入答案中。
import collections
chars = "welldonehoneyr"
words = ["hello","world","leetcode"]
def countCharacters(chars,w):
ans = 0
cnt = collections.Counter(chars)
for w in words:
c = collections.Counter(w)
print(c)
if all([c[i] <= cnt[i] for i in c]):
ans += len(w)
return ans
ans=countCharacters(chars,words)
print(ans)
输出:
Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
Counter({'w': 1, 'o': 1, 'r': 1, 'l': 1, 'd': 1})
Counter({'e': 3, 'l': 1, 't': 1, 'c': 1, 'o': 1, 'd': 1})
10
先指定一个list,然后调用collections.Counter()函数,将list传入,就可以得到list中每个元素的计数。