本文介绍: 力扣383-赎金信

赎金信

题目链接

解题思路

  1. 统计magazine中字符出现的字符,用哈希表保存
  2. 遍历ransomNote,记录其中出现的字符,出现一次,哈希表删除对应的字符
  3. 遍历哈希表,如果有的字符出现的次数为负数,则不能拼凑出目标字符
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        bool res = true;
        unordered_map<char,int> map;
        for(int i = 0;i<magazine.length();i++){
            map[magazine[i]]++;
        }
        for(int i = 0;i<ransomNote.length();i++){
            map[ransomNote[i]]--;
        }
        auto iter = map.begin();
        while(iter != map.end()){
            if(iter->second < 0){
                res = false;
                break;
            }
            ++iter;
        }
        
        return res;
    }
};
优雅的写法
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char,int> hash;
        for(auto a : magazine) hash[a]++;
        for(auto b : ransomNote){
            if(!hash[b]) return false;
            hash[b]--;
        }
        return true;
    }
};

原文地址:https://blog.csdn.net/qq_60749185/article/details/136047130

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_67191.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注