一、题目描述
二、思路
题目类似于之前写的一道题:打卡 DAY 15 哈希表:有效的字母异位词
三、解题过程
-
记录magazine字符串中各个字母的个数
int cnt[26] = { 0 }, i;
for (i = 0; magazine[i] != '\0'; i ++) {
cnt[magazine[i] - 'a'] ++;
}
-
遍历ransomNote字符串去判断判断ransomNote能不能由magazine里面的字符构成
for (i = 0; ransomNote[i] != '\0'; i ++) {
if (cnt[ransomNote[i] - 'a'] == 0) return false;
cnt[ransomNote[i] - 'a'] --;
}
return true;
四、代码
bool canConstruct(char * ransomNote, char * magazine){
int cnt[26] = { 0 }, i;
for (i = 0; magazine[i] != '\0'; i ++) {
cnt[magazine[i] - 'a'] ++;
}
for (i = 0; ransomNote[i] != '\0'; i ++) {
if (cnt[ransomNote[i] - 'a'] == 0) return false;
cnt[ransomNote[i] - 'a'] --;
}
return true;
}
时间复杂度:O(n+m),空间复杂度O(1)。