为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。
如果可以构成,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
这一道题目有两个数量值,一个字母、一个数字,所以我是用到了一个unordered_map容器,那么我就建立两个这个容器,然后比较他们的数值,ransomNote中字母magazine中必须有就行,否则return false。
虽然这个题目比较简单,但是对于我们来学习stl还是有些帮助的。
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char,int>nums1;
unordered_map<char,int>nums2;
for(int i=0;i<ransomNote.length();i++)
nums1[ransomNote[i]]++;
for(int i=0;i<magazine.length();i++){
nums2[magazine[i]]++;
}
for(int i=0;i<ransomNote.size();i++) //不能换成nums1.size()
if(nums1[ransomNote[i]]>nums2[ransomNote[i]])
return false;
return true;
}
};