输入:两个字符串:
-
ransomNote:需要拼出的字符 -
magazine:可用字符来源
要求:magazine 中的字符只能被使用一次,判断是否能构成 ransomNote。
- 能构成 → true
- 不能构成 → false
输出:true/false
思路:哈希简单题
- 统计
ransomNote中每个字符需要多少次(need), - 统计
magazine中每个字符实际出现多少次(have)。 - 逐项比较:只要有一个字符不够用,就直接 false。
复杂度:
时间复杂度:O(n + m)
空间复杂度:O(1) (字符只有26个 哈希表是常数级)
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char,int> need, have;
for (char c : ransomNote) need[c]++;
for (char c : magazine) have[c]++;
for (auto &p : need) {
char ch = p.first;
if (have[ch] < p.second) return false;
}
return true;
}
};

被折叠的 条评论
为什么被折叠?



