leetcode 383. Ransom Note

用magazine中的字母拼接处ransomNote,都是小写。

对magazine的字母哈希,保存出现的次数,再用ransomNote遍历减小。

    bool canConstruct(string ransomNote, string magazine) {
        vector<int> m(26, 0);
        int j = 0;
        for (int i = 0; i < ransomNote.size();) {
            if (m[ransomNote[i] - 'a'] == 0) {
                if (j >= magazine.size())
                    return false;
                m[magazine[j++] - 'a']++;
            } else
                m[ransomNote[i++] - 'a']--;
        }
        return true;
    }

这里有两个注意的点。

1.一开始用unordered_map,居然比直接遍历还慢。

2.这里优化了一下,不直接对magazine全哈希,需要才哈希,避免magazine后多出一串很长的无用字符。

posted on 2018-02-11 10:16  willaty  阅读(112)  评论(0编辑  收藏  举报

导航