前言
题目: 383. 赎金信
文档: 代码随想录——赎金信
编程语言: C++
解题状态: 成功解决!
思路
记住口诀,要求快速判断集合是否某个元素时要考虑哈希表法。根据字母的固定数目,建立两个长度为26的数组,记录两个字符串中各个字母出现的次数,只要 r a n d o m N o t e randomNote randomNote出现的任意字母的次数大于 m a g a z i n e magazine magazine那么就会返回 f a l s e false false,反之返回 t r u e true true。
代码
哈希表法
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
vector<int> note(26, 0);
vector<int> maga(26, 0);
for (int i = 0; i < ransomNote.size(); i++) {
note[ransomNote[i] - 'a']++;
}
for (int i = 0; i < magazine.size(); i++) {
maga[magazine[i] - 'a']++;
}
for (int i = 0; i < 26; i++) {
if (note[i] - maga[i] > 0) return false;
}
return true;
}
};
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)