image-20241115080843020

很简单的哈希表问题,由于是字母,只需要26个int的数组就可以,先遍历一遍magazine,一有出现就++

之后再遍历ransomnote,当>0时–,当<0时return false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool canConstruct(char* ransomNote, char* magazine) {
int nums[26]={0};
int lenr=strlen(ransomNote);
int lenm=strlen(magazine);
for(int i=0;i<lenm;i++){
nums[magazine[i]-'a']++;
}
for(int i=0;i<lenr;i++){
if(nums[ransomNote[i]-'a']>0){
nums[ransomNote[i]-'a']--;
}
else return false;
}
return true;
}