哈希表
- 思路
- 统计 magazine 所需字母的个数,形成一个 key 为字母,value 为其对应个数的 map表;
- 然后遍历需要组成的词语 ransomNote,每消耗一个字符、对应的 value 减一,如果value 小于 0 ,则不能构成;
- 考虑到词语都由小写字母组成,可以用26个 int 数组当做 map;
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if (ransomNote.size() > magazine.size()) {
return false;
}
int alphabet[26] = { 0 };
for (auto & c: magazine) {
alphabet[c - 'a']++;
}
for (auto & c : ransomNote) {
alphabet[c - 'a']--;
if (alphabet[c - 'a'] < 0) {
return false;
}
}
return true;
}
};