首页 > 其他分享 >leetcode 383赎金信

leetcode 383赎金信

时间:2024-08-16 12:17:05浏览次数:10  
标签:ransomNote map 字符 unordered magazine 383 charCout 赎金 leetcode

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

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

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

image.png
思路:使用unordered_map 容器统计magazine的字符频率,再遍历ransomNote中的每个字符判断字符频率是否与magazine一致

代码:

class Solution {

public:

    bool canConstruct(string ransomNote, string magazine) {

        //创建unordered_map存放每个字符的数量
        unordered_map<char, int> charCout;

        // 统计 magazine 中每个字符的数量
        for(char c: magazine){
            charCout[c]++;
        }

        // 检查 ransomNote 中的每个字符是否能在 magazine 中找到
        for(char c: ransomNote){
            if(charCout[c] == 0)
                return false;//找不到或字符用完false
            charCout[c]--;//找到了字符频率减一
        }
        return true;

    }
};

关联容器为什么选unordered_map?

  1. unordered_map包含键值对且不允许关键字重复,便于统计每个字符及其对应频率。
  2. 题目需要频繁查找和更新字符频率,unordered_map按照hash函数映射的方式组织元素,更符合需求。
  3. 由于问题本身不关心字符顺序,unordered_map 的无序性正好符合需求。

标签:ransomNote,map,字符,unordered,magazine,383,charCout,赎金,leetcode
From: https://www.cnblogs.com/cuberxh/p/18362626

相关文章

  • 表现良好的最长时间段(LeetCode)
    题目给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。请你返回「表现良好......
  • LeetCode530 二叉搜索树的最小绝对差
    前言题目:530.二叉搜索树的最小绝对差文档:代码随想录——二叉搜索树的最小绝对差编程语言:C++解题状态:成功解决!思路注意题目中的二叉搜索树,这个条件暗示每个节点的左子节点肯定小于该节点,右子节点肯定大于该节点。因此,使用中序遍历可以获得一个递增的有序数组,最......
  • LeetCode501 二叉搜索树中的众数
    前言题目:501.二叉搜索树中的众数文档:代码随想录——二叉搜索树中的众数编程语言:C++解题状态:不会…思路利用二叉搜索树性质的同时再加上双指针法。代码/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*lef......
  • 【Leetcode 594 】 最长和谐子序列 —— 这是假的滑动窗口吧!
    和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示......
  • LeetCode每日一题----特殊数组二
    解析:1.int[]nums:一个整数数组。2.int[][]queries:一个二维整数数组,每个一维数组包含两个整数,表示查询的范围。该方法的主要功能是根据给定的nums数组和一系列查询queries,判断每个查询区间[queries[i][0],queries[i][1]]内的元素是否都具有相同的奇偶性。返回一个布......
  • 光纤PCIe 卡设计资料第383篇: 基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡
    基于kintexUltraScaleXCKU060的双路QSFP+光纤PCIe卡一、板卡概述    本板卡系我司自主研发,基于Xilinx UltraScale Kintex系列FPGA  XCKU060-FFVA1156-2-I架构,支持PCIE Gen3 x8模式的高速信号处理板卡,搭配两路40G QSFP+接口,两组64-bit DDR4,每组容量2Gbyte,可稳定......
  • 【LeetCode:3148】矩阵中的最大得分(Java)
    题目链接3148.矩阵中的最大得分题目描述给你一个由正整数组成、大小为mxn的矩阵grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为c1的单元格移动到值为c2的单元格的得分为c2-c1。你可以从任一单元格开始......
  • 0基础leetcode练习(移动零)
    一、题目介绍这是移动零的网址,大家可以看完博客的思路去练习一下。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]......
  • LeetCode40.组合总和II
    LeetCode40.组合总和II力扣题目链接(opensnewwindow)给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。......
  • LeetCode39. 组合总和
    LeetCode39.组合总和题目叙述:给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入:ca......