给你两个字符串:ransomNote
和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
oc代码
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
vector<int> mag(26,0);
for(char c:magazine){
mag[c - 'a']++;
}
for(char c:ransomNote) if(--mag[c - 'a'] < 0)return false;
return true;
}
};
题目本身很简单,但是遇到了一个问题,当使用静态数组时本地运行和提交的结果不一致,同样的测试案例一个正确一个错误,错误代码如下
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int mag[26+10];//c风格
memset(mag, 0 , 36);//c风格
for(char c:magazine){
mag[c - 'a']++;
}
for(char c:ransomNote) if(--mag[c - 'a'] < 0)return false;
return true;
}
};