Lc60---1189. “气球” 的最大数量(排序)---Java版

1.题目

在这里插入图片描述

2.思路

(1)用字典的方法,ballon,这个单词里面每个字母,需要的个数
(2)再创一个字典的方法统计,输入的字符串的字母的个数
(3)计算能拼凑出多少个“ballon"
(4)代码解释

for (char c : text.toCharArray()) {count.put(c, count.getOrDefault(c, 0) + 1);}

text.toCharArray():将字符串text转换为字符数组。
for (char c : text.toCharArray()):这是一个增强型for循环,遍历字符数组中的每个字符。
count.put(c, count.getOrDefault(c, 0) + 1):这行代码使用count这个Map集合来存储每个字符及其出现的次数。
c是当前遍历到的字符。
count.getOrDefault(c, 0):这个方法尝试从count中获取字符c对应的值,如果c不在count中,则返回默认值0。

  • 1:将获取到的值加1,表示字符c出现的次数增加1。
    count.put(c, …):将更新后的计数结果放回count中。
    简单来说,这段代码会遍历字符串中的每个字符,然后统计每个字符出现的次数,并将结果存储在count这个Map集合中。如果count集合之前为空,那么每个字符的初始计数是0,然后每次出现都会增加1。
    (5)举例说明:
Map<Character, Integer> required = new HashMap<>();
required.put('b', 1); // 字符'b'需要1次
required.put('a', 1); // 字符'a'需要1次
required.put('l', 2); // 字符'l'需要2次
required.put('o', 1); // 字符'o'需要1次
required.put('n', 1); // 字符'n'需要1次

在这个例子中,required.keySet()将返回一个包含{‘b’, ‘a’, ‘l’, ‘o’, ‘n’}的Set集合。这个集合包含了构成单词"balloon"所需的所有不同字符。

使用required.keySet()的目的是遍历这个集合中的每个键,以便在后续的代码中检查和计算这些字符在另一个Map(比如count)中出现的次数,进而确定能否拼凑出完整的单词"balloon"。
(6)

1) Math.min:这是一个静态方法,属于Java的Math类,用于返回两个数值中的较小值。

2)minBalloons:这是代码中的一个变量,用于存储能够拼凑出单词"balloon"所需的最少气球(或字符)数量。初始值被设置为Integer.MAX_VALUE,即int类型能表示的最大值。
3)count.get©:这是从count这个Map集合中获取键为c的值。c是当前遍历到的字符,count集合存储了每个字符在给定文本中出现的次数。
required.get©:这是从required这个Map集合中获取键为c的值。required集合存储了构成单词"balloon"所需的每个字符的最小数量。
4)count.get© / required.get©:这个表达式计算的是,对于当前字符c,给定文本中出现的次数除以构成单词"balloon"所需的最小数量。结果是每个"balloon"中字符c可以拼凑出的最大单词数。
minBalloons = Math.min(minBalloons, count.get© / required.get©);:这行代码将minBalloons更新为当前计算出的值和已有的minBalloons值中的较小值。这样做的目的是确保minBalloons始终是所有字符中能够拼凑出"balloon"的最小数量。
5)举例来说,如果count中字符’l’出现了10次,而required中字符’l’需要2次来构成一个"balloon",那么count.get(‘l’) / required.get(‘l’)的结果是5。这意味着10个’l’可以构成5个"balloon"。如果这是迄今为止找到的最小值,minBalloons将被更新为5。如果minBalloons之前已经是4,那么它将保持不变,因为4比5小,表示可以更有效地使用字符来构成"balloon"。

(7)大体思路:这段代码通过比较字符串中每个字符出现的次数与构成单词"balloon"所需的最小数量,来计算出最多能拼凑出多少个"balloon"。如果缺少任何一个字符,则无法拼凑出任何"balloon"。

3.代码实现

class Solution {public int maxNumberOfBalloons(String text) {// 原本单词 "balloon" 中各字母的需求Map<Character,Integer> orginal=new HashMap<>();orginal.put('b',1);orginal.put('a',1);orginal.put('l',2);orginal.put('o',2);orginal.put('n',1);Map<Character,Integer> cnt=new HashMap<>();// 统计输入字符串中的字母出现次数,用加强版for循环//将text的字符串转换成字符数组text.tocharArray()for(char c:text.toCharArray()){  //cnt里面统计字符出现的次数  count.put(c, count.getOrDefault(c, 0) + 1);cnt.put(c,cnt.getOrDefault(c,0)+1);}int minQiQiu=Integer.MAX_VALUE;//先设置气球的最小数量//keyset(),可以遍历original的key值,每个key暂时保存再c变量里面for(char c:orginal.keySet()){//判断当前字母c的键值是否被输入的text的字符串的键值所包含if(cnt.containsKey(c)){//计算气球的最小数量minQiQiu=Math.min(minQiQiu,cnt.get(c)/orginal.get(c));}else{return 0;}}return minQiQiu;}
}

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

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

相关文章

vue3编程-import.meta.glob实现动态路由(菜单)

import.meta.glob 是vite提供的批量懒加载组件的方法 本地开发环境&#xff1a; const modules import.meta.glob(../views/**/*.vue)这段代码返回的modules是一个Map&#xff1a; key是vue文件的相对路径&#xff0c;值是一个函数&#xff0c;将函数打印出来&#xff0c;如…

Python鲁汶意外莱顿复杂图拓扑分解算法

&#x1f3af;要点 &#x1f3af;算法池化和最佳分区搜索&#xff1a;&#x1f58a;网格搜索 | &#x1f58a;发现算法池 | &#x1f58a;返回指定图的最佳划分 | &#x1f58a;返回指定图的最佳分区 | &#x1f3af;适应度和聚类比较功能&#xff1a;&#x1f58a;图的划分 |…

Python3网络爬虫开发实战(1)爬虫基础

一、URL 基础 URL也就是网络资源地址&#xff0c;其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme&#xff1a;协议&#xff0c;常用的协议有 Http&#xff0c;https&#xff0c;ftp等等&#xff1b;usern…

构建高效园区导览系统:基于3DGIS与物联网技术的实现方案

园区导航的挑战与机遇 在现代化的大型园区中&#xff0c;随着面积的不断扩张和布局的日益复杂&#xff0c;传统的纸质地图已难以满足日益增长的导航需求。每栋楼、每层楼都有着不同的办公室&#xff0c;不同的业务。这种低效的寻路过程不仅影响了客户的来访体验&#xff0c;也…

Flink时间和窗口

目录 时间语义 水位线&#xff08;Watermarks&#xff09; 并行流中的水位线 窗口 滚动窗口—Tumbling Windows 滑动窗口—Sliding Windows 会话窗口—Session Windows 全局窗口—Global Windows 例子 时间语义 如图所示&#xff0c;由事件生成器&#xff08;Event Pr…

LeetCode - #103 二叉树的锯齿形层序遍历

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅&#xff08;Netflix 增长黑客&#xff0c;《iOS 面试之道》作者&#xff0c;ACE 职业健身教练。&#xff09;的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

雪花算法 集群uid重复问题 uid-generator-spring-boot-starter

1、在生成环境 在某个业务使用该插件生成uid,由于业务整合了 mybatis-plus模块 2、该业务是分部署集群部署以及使用的多线程获取uid&#xff0c;使用中发现唯一建冲突&#xff0c;生成的uid有重复。 然后查看日志发现 workerId 始终为0 怀疑是生成workerId出了问题。 查看跟…

饥荒dst联机服务器搭建基于Ubuntu

目录 一、服务器配置选择 二、项目 1、下载到服务器 2、解压 3、环境 4、启动面板 一、服务器配置选择 首先服务器配置需要2核心4G&#xff0c;4G内存森林加洞穴大概就占75% 之后进行服务器端口的开放&#xff1a; tcp:8082 tcp:8080 UDP:10888 UDP:10998 UDP:10999 共…

前端:Vue学习 - 购物车项目

前端&#xff1a;Vue学习 - 购物车项目 1. json-server&#xff0c;生成后端接口2. 购物车项目 - 实现效果3. 参考代码 - Vuex 1. json-server&#xff0c;生成后端接口 全局安装json-server&#xff0c;json-server官网为&#xff1a;json-server npm install json-server -…

基于STM32瑞士军刀--【FreeRTOS开发】学习笔记(一)|| RISC / 底层代码执行步骤 / 汇编指令

本篇文章基于韦东山老师讲课笔记和自己理解编写。 RISC ARM芯片属于精简指令集计算机(RISC&#xff1a;Reduced Instruction Set Computing)&#xff0c;它所用的指令比较简单&#xff0c;有如下特点&#xff1a; ① 对内存只有读、写指令 ② 对于数据的运算是在CPU内部实现 …

CasaOS设备使用Docker安装SyncThing文件同步神器并实现远程管理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

加密软件有什么用?五款电脑文件加密软件推荐

加密软件对于个人和企业来说至关重要&#xff0c;尤其是在2024年这样一个高度数字化的时代&#xff0c;数据安全变得尤为重要。 数据保护&#xff1a;加密软件可以保护敏感信息不被未经授权的人访问。这包括个人数据、财务记录、健康信息、企业机密等。 防泄漏&#xff1a;防…

Python 全栈体系【三阶】(三)

第一章 Django 七、静态文件 1. 概述 静态文件是指在WEB应用中的图像文件、CSS文件、Javascript文件。 2. 静态文件的配置 settings.py中关于静态文件的配置如下&#xff1a; STATICFILES_DIRS [BASE_DIR , static, ]STATIC_URL /static/其中&#xff1a; STATICFILES…

java面试题,有synchronized锁,threadlocal、数据可以设置默认值、把redis中的json转为对象

有面试题&#xff0c;有synchronized锁&#xff0c;threadlocal 一、面试题小记二、加锁synchronized1. 先看代码2. synchronized 讲解2.1. 同步代码块2.2. 同步方法2.3. 锁的选择和影响2.4. 注意事项2.5 锁的操作&#xff0c;手动释放锁&#xff0c;显式地获取锁&#xff08;属…

【llama3.1】ollama的使用--本地部署使用llama3.1模型

快速入门 安装完成ollama后,在命令行窗口输入 ollama run llama3 上图表示 Ollama 正在下载 llama3 任务所需的资源文件,并显示了当前的下载进度、速度和预计剩余时间。这是 Ollama 在准备运行 llama3 任务之前所需的步骤。 上面的步骤完成后,就可以在本地进行聊天了,…

Golang | Leetcode Golang题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; func missingNumber(nums []int) int {n : len(nums)total : n * (n 1) / 2arrSum : 0for _, num : range nums {arrSum num}return total - arrSum }

Xlua原理 二

一已经介绍了初步的lua与C#通信的原理&#xff0c;和xlua的LuaEnv的初始化内容。 这边介绍下Wrap文件。 一.Wrap介绍 导入xlua后可以看到会多出上图菜单。 点击后生成一堆wrap文件&#xff0c;这些文件是lua调用C#时进行映射查找用的中间代码。这样就不需要去反射调用节约性…

Vue中的diff算法

文章目录 diff算法是什么比较方式源码分析patchpatchVnodeupdateChildren小结Vue3中diff算法优化diff算法是什么 diff算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行,不会跨层级比较在dff比较的过程中,循环从两边向中间比较(首位交叉…

Linux系统下安装MySQL

前言&#xff1a; 本篇教程是使用Centos8来进行安装部署&#xff0c;如果使用的Linux系统发行版不同安装部署过程中可能会有差异&#xff0c;相同环境下可以跟着操作流程进行部署。本篇文章的主要目的是为了学习分享使用如有疑问欢迎提出并共同讨论。 1、安装前的准备工作 移除…

sql的执行流程

执行过程分成两层&#xff0c;一层是server层&#xff0c;主要进行连接服务&#xff0c;和分析语句&#xff0c;执行sql 具体流程是 首先与用户通过连接器建立连接&#xff0c;然后将sql查询语句在查询缓存中查找&#xff0c;如果查找处理过相同的语句将&#xff0c;直接返回数…