首页 > 代码库 > [LeetCode] Ransom Note
[LeetCode] Ransom Note
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
寻找ransomNote中的字母是否由magazine中的字母组成,且每一个在magazine中的字母在ransomNote中只能被使用1次。通过map建立magazine中字母与出现次数的查找表,遍历ransomNote,如果在map中找到该字母,则让map中的该字母出现的次数-1,若次数小于0,返回false;如果map中未找到这个字母,返回false。如果遍历结束仍没有返回值,说明ransomNote中的字母都是由magazine中的字母组成,返回true。
class Solution { public: bool canConstruct(string ransomNote, string magazine) { unordered_map<char, int> m; for (int i = 0; i != magazine.size(); i++) m[magazine[i]]++; for (int i = 0; i != ransomNote.size(); i++) { if (m.count(ransomNote[i])) { m[ransomNote[i]]--; if (m[ransomNote[i]] < 0) return false; } else return false; } return true; } }; // 36 ms
[LeetCode] Ransom Note
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。