《LeetCode之每日一题》:227.赎金信

Posted 是七喜呀!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《LeetCode之每日一题》:227.赎金信相关的知识,希望对你有一定的参考价值。

赎金信


题目链接: 赎金信

有关题目

为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。

给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,
判断 ransomNote 能不能由 magazines 里面的字符构成。

如果可以构成,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false
示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false
示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true
提示:

1 <= ransomNote.length, magazine.length <= 10^5
ransomNote 和 magazine 由小写英文字母组成

题解

法一:字符统计
参考官方题解

class Solution 
public:
    bool canConstruct(string ransomNote, string magazine) 
        if (ransomNote.size() > magazine.size())
            return false;

        unordered_map<int, int> mp;//vector<int> cnt(26)
        for (auto &c : magazine)
        
            ++mp[c - 'a'];//统计magazine中出现的字符的次数
        

        for (auto &c : ransomNote)
        
            --mp[c - 'a'];
            if (mp[c - 'a'] < 0)
                return false;
        

        return true;
    
;

以上是关于《LeetCode之每日一题》:227.赎金信的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 383. 赎金信 / 372. 超级次方 / 1816. 截断句子

每日leetcode-数组-383. 赎金信

算法千题案例每日LeetCode打卡——69.赎金信

算法千题案例每日LeetCode打卡——69.赎金信

LeetCode 383. 赎金信

「 每日一练,快乐水题 」383. 赎金信