算法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

posted on 2025-04-26 17:28  sakura430  阅读(28)  评论(0)    收藏  举报