【LeetCode】383. 赎金信(String的遍历)

  今日学习的文章链接和视频链接

leetcode题目地址:383. 赎金信

 代码随想录题解地址:代码随想录

题目简介

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

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

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

看到题目的第一想法(可以贴代码)

1. 利用Map来存储magazine里的元素及其出现的次数,再用ransomNote里的元素去“消耗它”,若最后次数为 -1 或根本不存在该元素,则return false。

public boolean canConstruct(String ransomNote, String magazine) {Map<Character, Integer> m = new HashMap<>();char[] c1 = magazine.toCharArray();char[] c2 = ransomNote.toCharArray();for (char i : c1){if (m.containsKey(i)){int temp = m.get(i);m.replace(i, ++temp);}else {m.put(i, 1);}}for (char i : c2){if (m.containsKey(i)){int temp = m.get(i);if (temp == 0) return false;m.replace(i, --temp);}else {return false;}}return true;
}

实现过程中遇到哪些困难

看完代码随想录之后的想法

【解题思路】以空间换取时间,用一个长度为26的数组来记录magazine里字母出现的次数。

然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。

依然是数组在哈希法中的应用。

【想法】

1. 一些同学可能想,用数组干啥,都用map完事了,其实在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,而且还要做哈希函数,是费时的!数据量大的话就能体现出来差别了。 所以数组更加简单直接有效!

看完视频自己写的ACC:

public boolean canConstruct(String ransomNote, String magazine) {int[] alph = new int[26];char[] m = magazine.toCharArray();char[] r = ransomNote.toCharArray();for (char i : m){alph[i-97]++;}for (char i : r){alph[i-97]--;if (alph[i-97] < 0) return false;}return true;
}

学习时长

12:50 ~ 13:05  解题成功

13:05 ~ 13:10  看视频题解、写博客


今日收获

1. String的遍历:

① for循环直接遍历,强制转换成char类型

String str = "asdfghjkl";
        for(int i=0;i<str.length();i++){
        char ch = str.charAt(i);
}

② 转换成char[]遍历        GOOD!

char[] c=s.toCharArray();
for(char cc:c){
  ...//cc直接用了

③ 利用substring()函数

for(int i=0;i<str.length();i++){
  String subStr = str.substring(i, i+1)
}

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

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

相关文章

01|LangChain系统安装和快速入门

01&#xff5c;LangChain系统安装和快速入门 什么是大语言模型 大语言模型是一种人工智能模型&#xff0c;通常使用深度学习技术&#xff0c;比如神经网络&#xff0c;来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多&#xff0c;可以达到数十亿甚至更多&am…

C++入门【10-C++ 函数】

C 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&#xff0c;但在逻辑上&#xff0c…

日本药典数据库

日本药典&#xff08;Japanese Pharmacopoeia&#xff0c;简称JP&#xff09;&#xff0c;对于药品研究人员来说&#xff0c;日本药典查询可以提供药品标准的参考&#xff0c;设定研究指标&#xff0c;支持药物注册和上市&#xff0c;以及了解行业趋势和发展。这些信息对于研究…

找出一个二维数组中的鞍点

找出一个二维数组中的鞍点&#xff0c;即该位置上的元素在该行上的最大、在该列上最小。也有可能没有鞍点。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int a[10][10] { 0 };int n 0, m 0;int i 0, j 0;printf("请输入这个数组有n行m列…

0088__pthread_cond_broadcast和pthread_cond_wait使用

pthread_cond_broadcast和pthread_cond_wait使用-CSDN博客

Yapi详细安装过程(亲测可用)

1. 前置条件 1、Git 2、NodeJs&#xff08;7.6&#xff09; 3、Mongodb&#xff08;2.6&#xff09; 2. NodeJs的安装 1、获取资源 curl -sL https://rpm.nodesource.com/setup_8.x | bash - 2、安装NodeJS yum install -y nodejs 3、查看NodeJs和Npm node -v npm -v…

算法设计与分析2023秋-头歌实验-实验一 循环与递归

文章目录 第1关&#xff1a;从自然数中取3个数进行组合之循环算法任务描述编程要求测试说明参考答案 第2关&#xff1a;从自然数中取3个数进行组合之递归算法任务描述编程要求测试说明参考答案 第3关&#xff1a;求n的阶乘n!任务描述编程要求测试说明参考答案 第4关&#xff1a…

【数据结构复习之路】图(严蔚敏版)两万余字超详细讲解

专栏&#xff1a;数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】【树和二叉树】&#xff0c;我们接着复习 图&#xff0c;这篇文章我写的非常详细且通俗易懂&#xff0c;看完保证会带给你不一样的收获。如果对你有帮助&#xff0c;看在我这么辛…

奥迦插件23.12.5支持32和64位图色模拟(和大漠插件类似)

源码名称&#xff1a;奥迦插件23.12.5和大漠插件类似奥迦插件在Windows 10操作系统上使用Visual Studio 2019编写,适用于所有较新的Windows平台,是一款集网络验证,深度学习,内核,视觉,文字,图色,后台,键鼠,窗口,内存,汇编,进程,文件,网络,系统,算法及其它功能于一身的综合插件插…

计算两个复数之积(结构体函数)

本题要求实现一个计算复数之积的简单函数。 函数接口定义&#xff1a; struct complex multiply(struct complex x, struct complex y); 其中struct complex是复数结构体&#xff0c;其定义如下&#xff1a; struct complex{int real;int imag; }; 裁判测试程序样例&#…

针对海量数据的存储与访问瓶颈的解决方案

背景 在当今这个时代&#xff0c;人们对互联网的依赖程度非常高&#xff0c;也因此产生了大量的数据&#xff0c;企业视这些数据为瑰宝。而这些被视为瑰宝的数据为我们的系统带来了很大的烦恼。这些海量数据的存储与访问成为了系统设计与使用的瓶颈&#xff0c;而这些数据往往存…

Python装饰器泛化公有和私有属性

Python装饰器是一种强大的功能&#xff0c;允许程序员修改函数或类的行为。通过装饰器&#xff0c;可以在不修改函数或类本身的情况下&#xff0c;添加额外的功能或修改其行为。本文将深入探讨如何利用装饰器来泛化公有和私有属性的访问和修改方式。 Python装饰器的概念和作用…

正点原子驱动开发BUG(一)--SPI无法正常通信

目录 一、问题描述二、讲该问题的解决方案三、imx6ull的spi适配器驱动程序控制片选分析3.1 设备icm20608的驱动程序分析3.2 imx的spi适配器的驱动程序分析 四、BUG修复测试五、其他问题 一、问题描述 使用正点的im6ull开发板进行spi通信驱动开发实验的时候&#xff0c;主机无法…

install cuda cudnn tersorRT

# 安装 $ ubuntu-drivers devices$ sudo apt-get install nvidia-driver-470-server # 推荐是server&#xff0c;都可以。#delelt sudo apt --purge remove nvidia-* CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive CUDA Toolk…

装饰器设计模式

2. 装饰器设计模式 2.1 实现原理 装饰器设计模式&#xff08;Decorator&#xff09;是一种结构型设计模式&#xff0c;它允许动态地为对象添加新的行为。它通过创建一个包装器来实现&#xff0c;先将对象放入一个装饰器类中&#xff0c;再将装饰器类放入另一个装饰器类中&…

在4*4的平面上计算2a1+1+1

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 在4*4的平面上有2个点&#xff0c;保持2a1的结构&#xff0c;然后向剩余的14个格子里随机扔2个石子。 共有14*13/291种可能 1 - - - 2 - - - 3 - - 1 4 - - - 1 1 - 1 1 - - - - - - - 1 - - …

如何免费搭建私人电影网站(一)

前言&#xff1a;在线看电影经常会出现烦人的广告&#xff0c;为了不浪费时间看广告&#xff0c;有必要做自己的专属网站。 准备工作&#xff1a; 1、申请免费域名&#xff08;也可以花钱注册域名相对稳定&#xff09;链接: 申请免费域名方法 2、申请免费主机&#xff08;也可以…

JAVA:深入探讨Java 8 Stream的强大功能与用法

1、简述 Java 8引入了Stream API&#xff0c;为处理集合数据提供了一种更为强大和灵活的方式。Stream是一种抽象的数据结构&#xff0c;它允许你以一种声明性的方式处理数据集合。与传统的集合操作不同&#xff0c;Stream并不是一个存储数据的数据结构&#xff0c;而是在源数据…

代码随想录 518. 零钱兑换 II

题目 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。…

Linux线程——常用API

线程创建 函数原型及头文件 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);参数解读 tidp当pthread_create成功返回时&#xff0c;由tidp指向的内存单元…