题意:
判断勒索信是否来自杂志。
思路:
判断杂志上每个字母的频数是否高于勒索信。
代码如下:
bool canConstruct(char* ransomNote, char* magazine) {
int abc[26];
int ABC[26];
int i;
memset(abc,0,sizeof(int)*26);
memset(ABC,0,sizeof(int)*26);
for(i=0;magazine[i]!='\0';++i){
if(magazine[i]>='a'&&magazine[i]<='z'){
abc[magazine[i]-'a']++;
}
if(magazine[i]>='A'&&magazine[i]<='Z'){
ABC[magazine[i]-'A']++;
}
}
for(i=0;ransomNote[i]!='\0';++i){
if(ransomNote[i]>='a'&&ransomNote[i]<='z'){
abc[ransomNote[i]-'a']--;
if(abc[ransomNote[i]-'a']<0){
return false;
}
}
if(ransomNote[i]>='A'&&ransomNote[i]<='Z'){
ABC[ransomNote[i]-'A']--;
if(ABC[ransomNote[i]-'A']<0){
return false;
}
}
}
return true;
}