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

news2024/11/15 19:49:28

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.coloradmin.cn/o/1947961.html

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

相关文章

【C++ —— AVL树】

C —— AVL树 AVL树的概念AVL树节点的定义AVL树的插入向上调整旋转左单旋右单旋左右双旋右左双旋 AVL树的高度AVL树的验证总结&#xff1a;代码 AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素…

在QT中使用多线程并发服务器(C++)

什么是多线程并发服务器&#xff1f;在QT里如何使用多线程并发服务器呢&#xff1f; 多线程并发服务器是一种网络服务器设计&#xff0c;它能够同时处理多个客户端的请求。在多线程服务器中&#xff0c;主线程负责监听和接受来自客户端的连接请求&#xff0c;每当有一个新的连…

DNS服务器的搭建

1、DNS服务器端软件 DNS 的域名解析都是 udp/53 . 主从之间的数据传输默认使 ⽤tcp/53 DNS服务器端软件&#xff1a; Bind是⼀款开放源码的DNS服务器软件&#xff0c;Bind由美国加州⼤学Berkeley&#xff08;伯克 利&#xff09;分校开发和维护的&#xff0c;全名为Berkele…

美容院如何提高门店销售业绩?博弈美业收银系统分享五大策略

美容院要如何增加门店业绩&#xff1f;各位老板可以考虑以下几个方面的策略&#xff1a; 一、品牌宣传和营销&#xff1a; • 制定全面的营销计划&#xff0c;包括线上和线下宣传。可以利用社交媒体、网站、本地广告等多种渠道提升品牌知名度。 • 开展促销活动吸引新客户&a…

PYTHON学习笔记(七、python数据结构--集合)

目录 &#xff08;4&#xff09;set集合 1、集合的创建方式 1&#xff09;使用{ }直接创建集合 2&#xff09;使用内置函数set( )创建集合 3&#xff09;使用“ 集合生成式 ”生成集合 2、集合的访问方式 1&#xff09;使用for循环遍历 3、集合的修改操作 4、集合的…

SvelteKit - 1. 初始化项目

官方 doc - create a project 1、基本环境 &#xff08;下面是我这里的环境&#xff0c;亲测用 node 14 和 16 install 会报错&#xff09; node&#xff1a;20.9.0 npm&#xff1a;10.1.0 2、初始化项目 npm create sveltelatest my-app cd my-app npm install npm run de…

本地部署、微调大模型

本地部署、微调大模型 一、本地部署大模型 1.部署 更新git-lfs apt-get updateapt-get install git-lfs2. 这里极容易出错&#xff0c;如果报错就初始化git git lfs install git init git lfs install3.下载ChatGLM-6B源代码 git clone https://github.com/THUDM/ChatGLM…

华为强制恢复出厂设置后如何恢复数据?数据重生的2个方法介绍

华为作为全球知名的手机品牌&#xff0c;其产品在市场上广受欢迎。然而&#xff0c;有时由于各种原因&#xff0c;我们可能需要强制恢复出厂设置&#xff0c;这往往意味着数据的丢失。那么&#xff0c;如何在华为强制恢复出厂设置后&#xff0c;让数据“重生”呢&#xff1f;本…

赋能安防摄像头云台:国产大功率机壳开关旭之源电源可靠、高效的优势

由GIS地图、图像采集、传输、控制、显示等设备和控制软件组成的“天网系统”通过对固定区域进行实时监控和信息记录&#xff0c;为社会治安和城市管理提供了强有力的支撑。 随着技术的不断革新和升级&#xff0c;天网技术逐渐拓展到全国范围&#xff0c;并在各个城市和乡村实现…

兼容浏览器,切换PC端显示PC端,切换H5端显示H5端

兼容浏览器&#xff0c;切换PC端显示PC端&#xff0c;切换H5端显示H5端 Uniapp vue3 Uview 项目 Vue3 Vite Ts ElementPlus PC端 &#xff08;在浏览器PC端&#xff0c;切换H5端兼容显示H5端页面&#xff09; 浏览器H5端 (在浏览器H5端&#xff0c;切换PC端兼容显示PC端…

【React】通过实际示例详解评论列表渲染和删除

文章目录 一、引言二、初始状态与状态更新1. 使用useState钩子管理状态2. 评论列表的初始数据 三、列表渲染的实现1. list.map(item > { ... })2. return 语句3. JSX 语法4. 为什么这样设计5. 完整解读 四、列表项的唯一标识1. key 的作用2. key 的用法3. 可以没有 key 吗&a…

SpringBoot整合Kaptcha实现图片验证码加减乘除

目录 SpringBoot整合Kaptcha实现图片验证码加减乘除1. 添加Kaptcha依赖2. 自定义文本生成器3. 配置Kaptcha4. 获取验证码图片的方法4.1. 详细讲解控制器中的切割操作 5. 总结 SpringBoot整合Kaptcha实现图片验证码加减乘除 在开发Web应用时&#xff0c;验证码是一个常见的功能…

Dhtmlx Gantt教程:创建交互式甘特图的完整指南

在现代的项目管理中&#xff0c;时间是一种宝贵的资源&#xff0c;而甘特图则是一把解锁项目进度的魔法钥匙&#xff0c;想象一下&#xff0c;您可以在一个直观而动态的时间轴上&#xff0c;清晰地看到项目的每一个任务如何交织在一起&#xff0c;如何随着时间的推移展开&#…

temu卖家中心入口登入在哪里,跨境电商temu卖家中心入口登入

在跨境电商的浪潮中&#xff0c;拼多多推出的Temu平台以其独特的商业模式和优惠政策&#xff0c;吸引了众多卖家的目光。对于想要入驻Temu平台的商家而言&#xff0c;找到正确的卖家中心入口并成功登录&#xff0c;是开启跨境电商之旅的第一步。那么&#xff0c;Temu卖家中心入…

QGC二次开发入门教程(一):课程大纲

文章目录 前言一、课程大纲二、修改软件名称三、修改软件图标四、官方QGC中文版BUG修复五、汉化六、修改商标七、添加信号-槽1、添加文件到QGC工程2、添加界面3、QML和C交互4、信号与槽5、测试 八、添加QML和C交互九、MAVLINK的解析与发送十、换地图十一、添加自定义mavlink消息…

3. 手势识别(LeNet、Vgg16、ResNet50)

手势识别 Show me your code1. 模型 model.py2. LeNet 实现手势识别&#xff08;详细&#xff09;2.1 数据打包2.2 搭建模型2.3 训练模型2.4 结果分析2.5 推理过程 3. Vgg16 手势识别4. ResNet50 手势识别 Show me your code 1. 模型 model.py import torch from torch impor…

基于单片机的智能台灯设计

摘 要 &#xff1a; 随着电子产品智能化的发展 &#xff0c; 生活中人们使用的照明工具也逐渐智能化 &#xff0c; 功能也越来越丰富 。 本文介绍了使用单片机进行可调光台灯系统的设计。 通过控制单片机输出高低电平的持续时间 &#xff0c; 从而改变 PWM 的占空比 &#…

el-tree树添加向下移动按钮,前端界面调整顺序

需求&#xff1a;树上添加向下按钮&#xff0c;再不调用接口的情况下&#xff0c;调整树的顺序结构 遇到的问题&#xff1a;第一次点击更新的&#xff0c;数据和视图是调整好的&#xff0c;再次点击页面调整顺序&#xff0c;只有数据被调整了&#xff0c;视图没有发生改变。 &…

【音视频之SDL2】bmp图片与绘制bmp

文章目录 前言BMP是什么SDL2绘制BMP的原理SDL2绘制BMP的流程SDL_LoadBMP作用函数原型参数返回值示例代码 SDL_BlitSurface作用函数原型参数返回值 示例代码效果展示总结 前言 在现代多媒体应用中&#xff0c;图像的处理和显示是非常重要的一部分。无论是在游戏开发还是在视频处…

Qt SQLite数据库编程学习总结

到此为止&#xff0c;就使用Qt进行SQLite数据库的操作&#xff0c;做一次总结 1. Qt中数据库操作的相关概念和类 Qt 数据库编程相关基本概念https://blog.csdn.net/castlooo/article/details/140497177 2.表的只读查询--QSqlQueryModel QSqlQueryModel单表查询的使用总结htt…