算法day19 赎金信
题目描述

思路:
本题仍然是要判断我们能否在一个串中找到另一个串的元素,并且本体是允许重复的,所以我们第一时间想到哈希解法。我们创建一个哈希表来收集杂志的字符,然后通过判断这些字符是否满足信中所需要的字符的数目。第一次遍历杂志收集,第二次遍历信判断。
代码如下:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char,int> hash;
for(auto k:magazine){
if(hash.find(k)!=hash.end()){
hash[k]++;
}else{
hash.insert({k,1});
}
}
for(auto v:ransomNote){
if(hash.find(v)!=hash.end()){
hash[v]--;
if(hash[v]==0){
hash.erase(v);
}
}else{
return false;
}
}
return true;
}
时间复杂度:O(n+m)
空间复杂度:O(k)
END
浙公网安备 33010602011771号