383. 赎金信
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char, int> find_umap;
for (auto ch : magazine) {
find_umap[ch]++;
}

for (auto ch : ransomNote) {
auto it = find_umap.find(ch);
if (it != find_umap.end() && it->second != 0) {
find_umap[ch]--;
}else{
return false;
}
}
return true;
}
};

这道题和 242.有效的字母异位词 稍有不同。

这里面最关键的一步:it != find_umap.end() && it->second != 0

在映射中找到还不够,得判断 value 是否为 0 的情况。如果 value 为 0 ,代表已经没有 key 能够拿去组成,返回 false 即可。