赎金信-力扣

这道题想到的解法是使用一个哈希表来存储magazine里每个字符出现的次数,然后遍历ransomNote,出现对应的字母则哈希表中对应的值减一,当查找不到某个字符,或者某个字符的值小于0时,则返回false。代码如下:

cpp 复制代码
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char, int> mp;
        for(auto str : magazine){
            mp[str]++;
        }

        for(auto str : ransomNote){
            auto it = mp.find(str);
            if(it != mp.end()){
                it->second--;
                if(it->second < 0){
                    return false;
                }
            }else{
                return false;
            }
        }
        return true;
    }
};

在代码随想录看到使用数组做哈希表,在这道题中,使用数组更加简单有效。代码如下:

cpp 复制代码
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int record[26] = {0};
        //add
        if (ransomNote.size() > magazine.size()) {
            return false;
        }
        for (int i = 0; i < magazine.length(); i++) {
            // 通过record数据记录 magazine里各个字符出现次数
            record[magazine[i]-'a'] ++;
        }
        for (int j = 0; j < ransomNote.length(); j++) {
            // 遍历ransomNote,在record里对应的字符个数做--操作
            record[ransomNote[j]-'a']--;
            // 如果小于零说明ransomNote里出现的字符,magazine没有
            if(record[ransomNote[j]-'a'] < 0) {
                return false;
            }
        }
        return true;
    }
};
相关推荐
执子手 吹散苍茫茫烟波12 分钟前
leetcode415. 字符串相加
java·leetcode·字符串
百度Geek说1 小时前
第一!百度智能云领跑视觉大模型赛道
算法
big_eleven1 小时前
轻松掌握数据结构:二叉树
后端·算法·面试
big_eleven1 小时前
轻松掌握数据结构:二叉查找树
后端·算法·面试
CoovallyAIHub1 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·计算机视觉
执子手 吹散苍茫茫烟波1 小时前
LCR 076. 数组中的第 K 个最大元素
leetcode·排序算法
kyle~2 小时前
OpenCV---特征检测算法(ORB,Oriented FAST and Rotated BRIEF)
人工智能·opencv·算法
初学小刘3 小时前
决策树:机器学习中的强大工具
算法·决策树·机器学习
山顶风景独好3 小时前
【Leetcode】随笔
数据结构·算法·leetcode
lxmyzzs4 小时前
【图像算法 - 16】庖丁解牛:基于YOLO12与OpenCV的车辆部件级实例分割实战(附完整代码)
人工智能·深度学习·opencv·算法·yolo·计算机视觉·实例分割