单词拼写
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
注意:每次拼写时,chars 中的每个字母都只能用一次。
返回词汇表 words 中你掌握的所有单词的 长度之和。
示例:
输入:words = ["cat","bt","hat","tree"], chars = "atach"
输出:6
解释:
可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:首先通过对单词表进行遍历,得到每个单词,在对每个单词进行遍历,得到每个单词的字母,接着统计出这个字母在单词中出现的次数(题目要求只能出现一次),以及统计这个单词在字母表中出现的次数,如果这个字母在单词中出现的次数大于一次,那么直接跳出循环,接着判断这个字母在单词中出现的频次是否大于在字母表中出现的频次,如果大于跳出循环(为了验证字母不在字母表的情况),否则对计数器进行加一操作。
class Solution:
def countCharacters(self, words: List[str], chars: str) -> int:
ans = 0
for w in words:
for i in w:
if w.count(i) > 1:
break
if w.count(i) > chars.count(i):
break
else:
ans+=len(w)
return ans