思路
哈希表计数
对于一个单词word
,只要其中的每个字母数量都不大于chars
中对应的字母的数量,那么就可以用chars
中的字母拼写出word
。所以我们只需要用一个哈希表存储chars
中每个字母的数量,再用一个哈希表存储word
中每个字母的数量,最后将两个哈希表的键值逐一进行比较即可。
代码
class Solution {
public:
int countCharacters(vector<string>& words, string chars) {
unordered_map<char, int> charMap;
//存储chars字符串每个字符出现的次数
for (char c : chars)
{
charMap[c]++;
}
int ans = 0;
for (int i=0;i<words.size();i++)
{
//存储word字符串每个字符出现的次数
unordered_map<char, int> wordMap;
bool flag = true;
for (char c:words[i])
{
wordMap[c]++;
}
//逐一比较
for (char c:words[i])
{
if (wordMap[c] > charMap[c]) {
flag = false;
break;
}
}
if (flag) ans += words[i].size();
}
return ans;
}
};