题目内容
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。
返回词汇表 words 中你掌握的所有单词的 长度之和。
题目分析
创建哈希表,分别记录每个单词的字母数目和字母表的字母数目,只要单词的字母数目都小于字母表的字母数目,就可以认为已经学会了。
代码
class Solution {
public:
int countCharacters(vector<string>& words, string chars) {
int res=0;
int ch[26]={0};
for(char c:chars){
ch[c-'a']++;
}
for(string word:words){
int wd[26]={0};
for(char w:word){
wd[w-'a']++;
}
res+=word.size();
for(char w:word){
if(wd[w-'a']>ch[w-'a']){
res-=word.size();
break;
}
}
}
return res;
}
};