赎金信--力扣383

news2024/12/27 11:17:34

赎金信

  • 题目
  • 思路一
  • 方法一:哈希表
  • 思路二
  • 方法二 数组

题目

在这里插入图片描述

思路一

我们使用哈希表map的思路,A能不能由B组成,说明B包含的元素个数要大于等于A。
所以我们先利用map的key和value分别对magazine中的出现的字符以及出现的次数存储起来。
然后我们去ransomNote中找对应的字符,每找到一次且value值大于零,就让value值减一。
如果没找到或者value值小于零,直接返回false。

方法一:哈希表

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char, int> map;
        for (char c : magazine) {   
            map[c]++;
        }
        for (char d : ransomNote) {
            if (map.find(d) != map.end() && map.find(d)->second > 0) {
                map[d]--;
                
            } else {
                return false;
            }
        }
        return true;
    }
};

思路二

题目明确说了,只包含小写字母,所以可以直接用数组来完成,不需要利用map消耗过多的空间。
如果ransomNote的长度大于magazine,很明显ransomNote不能由magazine组成,直接返回false。
然后在magazine中对每个字符出现的次数累加,在ransomNote对所有的字符累减。
最后判断数组中是否存在小于零的值,如果有,则返回false,否则为true。

方法二 数组

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int record[26] = {0};
        // 判断数组长度是否合理
        if (ransomNote.size() > magazine.size()) return false;

        for (int i = 0; i < magazine.size(); i++) {
            record[magazine[i] - 'a']++;
        }
        for (int i = 0; i < ransomNote.size(); i++) {
            record[ransomNote[i] - 'a']--;
        }
        for (int i = 0; i < 26; i++) {
            if (record[i] < 0) return false;
        }
        return true;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣题解2552

大家好&#xff0c;欢迎来到无限大的频道。 今天和大家分享的是2552的题解思路。 题目描述&#xff1a; 统计上升四元组 一个长度为 n 下标从 0 开始的整数数组 nums &#xff0c;它包含 1 到 n 的所有数字&#xff0c;请你返回上升四元组的数目。 如果一个四元组 (i, j, …

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了&#xff0c;提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic&#xff0c;并且topic没有被手动创建过 R…

智慧教室无纸化方案应用领域和技术实践探究

智慧教室无纸化应用场景 智慧教室无纸化方案在多个领域得到了广泛应用&#xff0c;主要体现在教育领域&#xff0c;但随着技术的发展和应用的深入&#xff0c;其应用范围也在逐渐扩大。以下是一些主要的应用领域&#xff1a; 一、教育领域 课堂教学&#xff1a; 中小学数学课…

BFS迷宫最小路径问题

给定一个迷宫&#xff0c;0表示空地可以走&#xff0c;1表示墙壁不能穿越&#xff1b;在迷宫中可以向&#xff08;上下左右&#xff09;四个方向行进&#xff1b; 找到从左上角到右下角的最短路径&#xff0c;并计算最短路径的长度。 迷宫示例如下&#xff1a; 算法步骤&…

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析 ### 概述 在前端开发和Java后端交互的复杂环境中&#xff0c;org.aspectj.apache.bcel.classfile.ClassFormatException 作为一个难以预测的异常&#xff0c;时常给开发者带来困扰。这个异常主要与 AspectJ—…

Trigger源码分析 -- ant-design-vue系列

Trigger源码分析 – ant-design-vue系列 1 概述 源码地址&#xff1a; https://github.com/vueComponent/ant-design-vue/blob/main/components/vc-trigger/Trigger.tsx 在源码的实现中&#xff0c;Trigger组件主要有两个作用&#xff1a; 使用Portal组件&#xff0c;把Pop…

迟滞比较器/施密特触发器

功能 从下面原理图像看来&#xff0c;只有在达到上下阈值才会出现输出电平的转换&#xff0c;这样防止信号的杂波跳变。而且每次的阈值是随着输出而变化的&#xff0c;当输出高时&#xff0c;阈值如下图中&#xff0c;V_PV_N V_R*( RF/(R1RF) )VH*( R1/(R1RF) );当输出低时&a…

QT核心机制

目录 学习内容&#xff1a; 1. 对话框 1.1 消息对话框&#xff08;QMessageBox&#xff09; 1.2 消息对话框实例 1.3 颜色对话框&#xff08;QColorDialog&#xff09;、字体对话框&#xff08;QFontDialog&#xff09;、文件对话框&#xff08;QFileDialog&#xff09; …

Python面试常见问题及详细解答:从基础到高级概念全覆盖

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 以下是Python面试中常见的一些问题及其详细答案的整理&#xff1a; 1. Python的可变与不可变对象 问题: 什么是可变对象和不可变对象&#xff1f;举例说明。答案: 可变对象: 可以在原地…

实现卷积层的前向传播(Pythom版)

在TensorFlow框架中&#xff0c;实现卷积层&#xff08;2维&#xff09;的代码是 tf.keras.layers.Conv2D()。它主要接收如下几个参数&#xff0c; filters&#xff1a;卷积核的个数&#xff0c;也就是卷积层输出的通道数&#xff08;沿axis-1的维度&#xff09; kernel_size&a…

AI秒画损失函数曲线图(Loss Function Curve)

在深度学习模型训练中&#xff0c;Loss曲线图是衡量模型性能的一个重要指标。通过绘制Loss曲线&#xff0c;能够清楚地观察到模型在训练过程中的收敛情况&#xff0c;从而帮助我们判断模型是否出现过拟合或欠拟合。本文将介绍如何通过简单几步&#xff0c;快速绘制出训练的Loss…

iphone16-iphone16pro原壁纸分享

iphone16-iphone16pro原壁纸分享 苹果公司在2024年9月10日的秋季新品发布会上正式推出了iPhone 16系列智能手机。以下是iPhone 16系列的主要特点和更新&#xff1a; 全新A18芯片&#xff1a;iPhone 16系列搭载了苹果最新的A18芯片&#xff0c;这款芯片专为苹果智能&#xff08;…

【WebGIS实例】(16)GeoServer 自定义样式 - 渲染矢量数据

1. 前言 本篇博客将会分享一系列的 GeoServer 样式&#xff0c;通过这些样式预先在服务端完成数据渲染&#xff0c;让前端应用更便捷的加载数据服务。 2. 面矢量 示例数据&#xff1a; {type: FeatureCollection,features: [{type: Feature,properties: {分类字段: 字段一…

PPT复制图表时颜色发生变化怎么办?

有时可能想复制其他PPT的图表到另一个PPT里&#xff0c;复制过来发现颜色发生了变化&#xff0c;这与我们PPT中的主题色颜色不同有关&#xff0c;所以就导致了图表的变色。 以上两张图片就是发生了变色的情况&#xff0c;一个是原来的颜色&#xff0c;一个是变化后的颜色。 解…

【鸿蒙】HarmonyOS NEXT星河入门到实战4-ArkTS界面布局深入

目录 一、布局元素组成 1.1 内边距-padding 1.2 外边距 margin 1.3 实战案例-QQ音乐-登录 1.4 边框 border 二、设置组件圆角 2.1 基本圆角设置 2.2 特殊形状的圆角设置 三、背景属性 3.1 背景图片-backgroundImage 3.2 背景图片位置-backgroundImagePosition 3.3 背…

什么是梯度? 梯度的作用 梯度的应用场景。

梯度 是一个非常重要的概念,它直接关系到模型的训练过程。以下是对梯度的详细解释: 梯度的基本概念 梯度 是一个向量,表示函数在某一点的导数或偏导数。在多维空间中,梯度指向的是函数值上升最快的方向。对于一个函数 f(x),在某一点 x 处的梯度记作 ∇f(x),它可以理解为在…

【Linux进程详解】进程地址空间

目录 1.直接写代码看现象 2.引入最基本的理解 3.细节问题-理解它 1.直接写代码看现象 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <unistd.h> int g_val 100;int main() {printf("fath…

常回家看看之house of kiwi

house of kiwi 前言&#xff1a;house_of_kiwi 一般是通过触发__malloc_assert来刷新IO流&#xff0c;最后可以劫持程序流或者通过和setcontext来打配合来进行栈迁移来得到flag。 我们看看触发的源码 #if IS_IN (libc) #ifndef NDEBUG # define __assert_fail(assertion, fi…

MFC之CString类及其成员函数用法详解

CString是 CStringT(属于MFC 和 ATL 之间共享的类) 的类模板的专用化&#xff0c;没有基类。在头文件atlstr.h中可以看到CString的定义&#xff1a; CString对象由可变长度的一队字符组成。CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE&#xff0c;则…

Leetcode 300. 最长递增子序列 记忆化搜索、贪心二分 C++实现

Leetcode 300. 最长递增子序列 问题&#xff1a;给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是…