leetcode383_赎金信
一、题目
二、题目分析
这个其实跟之前那道四数之和的题目很相似,我们只需要使用一个map来记录其中一个字符串的字母以及它出现的次数,然后对于另外字符串,去遍历就好了。
因为最理想的情况是,赎金信上面的字符串需要是杂志上的字符串的子集,所以这个时候我采取的方式是遍历杂志的字符串的数目,然后再对赎金信上的做一个查询,这样就可以得到最后的一个结果,如果每个字符的数目都不小于0,那么返回true,否则返回false。
三、代码
class Solution { public: bool canConstruct(string ransomNote, string magazine) { //可以先设置一个unordered_map,记录magazine里面出现的字母与次数 //然后对ransomNote里面进行遍历 //如果最后没有小于0的,那么就可以 int magazineLength = magazine.length(); //初始化map unordered_map<char, int> map; for(int i=0; i){ map[magazine[i]]++; } //遍历 int ransomNoteLength = ransomNote.length(); for(int i=0; i ){ //如果找到 if(map.find(ransomNote[i])!=map.end()){ map[ransomNote[i]]--; if(map[ransomNote[i]]<0) return false; } else return false; } return true; } };