383. Ransom Note
解题历程:
- 2016/Aug/23 大约14分钟
货真价实的Easy题,就是用Hashmap来求解,我想不用描述思路了,不过本题有可以优化的余地,即字母是有限的,使用ASCII码的所有字符搞一个数组也可以代替Hashmap。代码如下:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char, int> letter_map;
for (int i = 0; i < magazine.length(); ++i) {
auto found = letter_map.find(magazine[i]);
if (found == letter_map.end()) {
letter_map[magazine[i]] = 0;
}
++letter_map[magazine[i]];
}
for (int j = 0; j < ransomNote.size(); ++j) {
auto found = letter_map.find(ransomNote[j]);
if (found == letter_map.end()) {
return false;
}
--letter_map[ransomNote[j]];
if (letter_map[ransomNote[j]] == 0) {
letter_map.erase(found);
}
}
return true;
}
};