383. Ransom Note
2017-03-11 18:40
225 查看
Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false. Each letter in the magazine string can only be used once in your ransom note. Note: You may assume that both strings contain only lowercase letters. canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true
第一次:
class Solution { public: bool canConstruct(string ransomNote, string magazine) { const int len1 = ransomNote.length(); const int len2 = magazine.length(); if(len1 == 0 && len2 == 0) return true; unordered_map<int, int> umap; for(int i=0; i<len1; ++i) umap[ransomNote[i]]++; for(int i=0; i<len2; ++i) umap[magazine[i]]--; auto it = find_if(umap.begin(), umap.end(), [](const pair<int, int>& pr) {return pr.second > 0;} ); return it == umap.end(); } };
优化后:
class Solution { public: bool canConstruct(string ransomNote, string magazine) { const int len1 = ransomNote.length(); const int len2 = magazine.length(); if(len1 == 0 && len2 == 0) return true; unordered_map<int, int> umap; for(int i=0; i<len2; ++i) umap[magazine[i]]++; for(int i=0; i<len1; ++i) { if(--umap[ransomNote[i]] < 0) return false; } return true; } };
相关文章推荐
- Leetcode - String - 383. Ransom Note(水题)
- leetcode 383. Ransom Note
- 383. Ransom Note
- [LeetCode]--383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- String:383. Ransom Note
- leetcode-383. Ransom Note
- 【leetcode】383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- [leetcode] 383. Ransom Note
- 383. Ransom Note
- LeetCode - 383. Ransom Note
- 383. Ransom Note
- [Leetcode] 383. Ransom Note 解题报告
- leetcode题解-58. Length of Last Word && 67. Add Binary && 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note