思路
哈希表計數
對於一個單詞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;
}
};