383. Ransom Note

解题历程:


  1. 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;
    }
};

results matching ""

    No results matching ""