算法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  阅读(12)  评论(0)    收藏  举报