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后多出一串很长的无用字符。
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】