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

LeetCode 383 赎金信

时间:2023-10-10 20:59:14浏览次数:26  
标签:ransomNote 字符 int ++ magazine 383 哈希 赎金 LeetCode

LeetCode 383 赎金信

1. 题目地址

https://leetcode.cn/problems/ransom-note/?envType=study-plan-v2&envId=top-interview-150

2. 题解

    这道题是一道哈希表的经典例题,具体步骤如下:
        1.  定义哈希表unordered_map<char,int> h。
            其中char代表字符,int代表该字符的出现次数。
        2.  遍历magazine里面的每一个字符,并统计出现次数。
        3.  遍历ransomNote里面的每一个字符,会出现如下情况:
            3.1 如果该字符跟哈希表当中的有对应,那么出现次数-1。
            3.2 如果该字符跟哈希表当中的没有对应,那么代表ransomNote不能由magazine里面的字符构成。
            3.3 如果该字符在哈希表查找时,发现已经为0,那么代表ransomNote也不能由magazine里面的字符构成。
        4.  如果上述情况都没有出现,那么返回true即可。

3. 代码

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        // //声明哈希表或数组
        // //第一个是字符,第二个是该字符出现的次数
        // unordered_map<char,int> h;
        // //统计字符
        // for(int i = 0; i < magazine.size(); i ++){
        //     h[magazine[i]]++;
        // }
        // for(int i = 0; i < ransomNote.size(); i ++){
        //     if(!h[ransomNote[i]]){
        //         return false;
        //     }
        //     h[ransomNote[i]]--;
        // }
        // return true;
        int h[26];
        memset(h,0,sizeof(h));
        for(int i = 0; i < magazine.size(); i ++){
            h[magazine[i] - 'a']++;
        }
        for(int i = 0; i < ransomNote.size(); i ++){
            if(!h[ransomNote[i] - 'a']){
                return false;
            }
            h[ransomNote[i] - 'a']--;
        }
        return true;
    }
};

标签:ransomNote,字符,int,++,magazine,383,哈希,赎金,LeetCode
From: https://www.cnblogs.com/gao79135/p/17755688.html

相关文章

  • LeetCode 392 判断子序列
    LeetCode392判断子序列1.题目地址https://leetcode.cn/problems/is-subsequence/?envType=study-plan-v2&envId=top-interview-1502.题解采用双指针算法,具体步骤如下:1.i指针指向s的起始位置,j指针指向t的起始位置。2.如果i指向的元素和j指向......
  • LeetCode 125 验证回文串
    LeetCode125验证回文串1.题目地址https://leetcode.cn/problems/valid-palindrome/?envType=study-plan-v2&envId=top-interview-1502.题解这道题比较简单,思路如下:1.对源字符串进行处理,过滤掉非字母数字字符。这里需要注意:我们要将大写字母统一转换成小......
  • LeetCode 58 最后一个单词的长度
    LeetCode58最后一个单词的长度1.题目地址https://leetcode.cn/problems/length-of-last-word/description/?envType=study-plan-v2&envId=top-interview-1502.题解这道题由于要求最后一个单词的长度,因此我们可以从后往前遍历。在遍历的时候统计字符的个数即可。遇......
  • 【LeetCode】最小处理时间
    题目你有n颗处理器,每颗处理器都有4个核心。现有n*4个待执行任务,每个核心只执行一个任务。给你一个下标从0开始的整数数组processorTime,表示每颗处理器最早空闲时间。另给你一个下标从0开始的整数数组tasks,表示执行每个任务所需的时间。返回所有任务都执行完......
  • 算法训练day29 LeetCode 39.40.131
    算法训练day29LeetCode39.40.13139.组合总和题目39.组合总和-力扣(LeetCode)题解代码随想录(programmercarl.com)classSolution{private:vector<vector<int>>result;vector<int>path;voidbacktracking(vector<int>&candidates,......
  • LeetCode——98. 验证二叉搜索树
    98.验证二叉搜索树本次博客,我将记录验证二叉搜索树由于二叉搜索树的性质是每个节点的左子树中的全部节点数据小于它,而右子树中的全部节点的数据都大于它,因此可以通过这条性质来进行判断刚上手的时候直接就做了,没考虑到局部最优而非全局最优的情况,遇到这种测试用例直接寄了:是......
  • LeetCode 13 罗马数字转整数
    LeetCode13罗马数字转整数1.题目地址https://leetcode.cn/problems/roman-to-integer/description/2.题解这道题的解题过程非常简单,具体如下:1.我们需要将罗马数字对应的数,存到一个哈希表中。待用到时,直接使用即可。2.对于正常情况讲(前面......
  • [Leetcode Weekly Contest]365
    链接:LeetCode[Leetcode]2873.有序三元组中的最大值I给你一个下标从0开始的整数数组nums。请你从所有满足i<j<k的下标三元组(i,j,k)中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回0。下标三元组(i,j,k)的值等于(nums[i]......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......
  • Leetcode刷题模版总结
    1.双指针双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。1)滑动窗口若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。 例题:classSolution{public:......