题目:
代码(首刷自解 2024年1月15日):
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
vector<int> v(26);
for(auto letter : magazine) {
v[letter - 'a']++;
}
for(auto letter : ransomNote) {
if(v[letter - 'a'] == 0) return false;
v[letter - 'a']--;
}
return true;
}
};
看见字母就要考虑数组来做哈希表
代码(二刷自解 2024年4月23日)
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
// hash存magazine的每个字符,ransomNote减字符
if (ransomNote.size() > magazine.size()) return false;
vector<int> hash(26, 0);
// TODO: while condition
int index = 0;
while (index < magazine.size()) {
if (index < ransomNote.size()) {
hash[ransomNote[index] - 'a']--;
}
hash[magazine[index] - 'a']++;
index++;
}
for (auto it : hash) {
if (it < 0) return false;
}
return true;
}
};