用数组记录magazine中每个字母出现的次数,再去比对ransomNote中的每个字母,每次让该字母的出现次数减一,表示可用的字母次数。如果碰到某字母的可用次数< = 0即为不合法情况
class Solution { public: bool canConstruct(string ransomNote, string magazine) { int mp[27]; memset(mp,0,sizeof mp); bool flag=true; for(int i=0;magazine[i];i++) mp[magazine[i]-'a']++; for(int i=0;ransomNote[i];i++){ if(mp[ransomNote[i]-'a']<=0){ return false; } mp[ransomNote[i]-'a']--; } return true; } };