给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
map<char,int> m;
for(int i = 0 ; i < magazine.size();i++)
{
if(m.count(magazine[i])==1)
{
m[magazine[i]]++;
}
else
m[magazine[i]] = 1;
}
for(int i = 0 ; i < ransomNote.size();i++)
{
if(m.count(ransomNote[i])!=1)
return false;
else
m[ransomNote[i]]--;
if(m[ransomNote[i]] < 0)
return false;
}
return true;
}
};
思路:map存储magazine中的字符和出现次数,然后用ransomNote去比对,比对失败直接false,比对成功次数-1,并判断次数是否小于0,若小于0则返回false。当比对结束且所有value都不小于0返回true。