leetCode Ransom Note
1、题目描述
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.
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
输入两个string ,判断第二个string是否能构造出第一个字符。
2、问题分析
如果第一个string 中的每个 字符都可以在 第二个字符中找到,并且该字符在第一个string中的数量少于在第二个string中的数量,则第二的string可以构造出第一个string。
使用两个 map , ,map<char,int> 存储在每个string中对应的字符的出现次数。然后对比两个map 。
3、代码
1 bool canConstruct(string ransomNote, string magazine) { 2 3 map<char,int> mR; 4 for(char &c : ransomNote) 5 mR[c]++; 6 7 map<char,int> mM; 8 for(char &c : magazine) 9 mM[c]++; 10 11 for(auto it : mR ) 12 if(it.second > mM[it.first]) 13 return false; 14 return true; 15 16 }