解题思路:这题主要考查字符串的查找,对于这个问题,倘若是一个字符串中必须连续的包含一个字符串,那么直接可以使用c++ string类中的str1.find(str2)这个方法.但是,题目的意思是稍微比这个难一些,是要求一个字符串的所有字符是另一个的子集,考虑使用map<char,int>,将两个string 重新写入map中,再进行比较,即可.
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
map<char,int> Note;
map<char,int> mag;
for(int i = 0; i < ransomNote.length();i++){
Note[ransomNote[i]]++;
}
for(int i = 0; i < magazine.length();i++){
mag[magazine[i]]++;
}
map<char,int>::iterator it;
for(it = Note.begin(); it != Note.end(); it++){
if (mag.find(it->first) == mag.end() || mag.find(it->first)->second < it->second)
return false;
}
return true;
}
};