哈希表题目:“气球”的最大数量

news2024/10/6 20:35:54

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:“气球”的最大数量

出处:1189. “气球”的最大数量

难度

2 级

题目描述

要求

给你一个字符串 text \texttt{text} text,你需要使用 text \texttt{text} text 中的字母来组成尽可能多的单词 “balloon" \text{``balloon"} “balloon"(气球)。

字符串 text \texttt{text} text 中的每个字母最多只能被使用一次。请你返回可以组成的单词数量的最大值。

示例

示例 1:

示例 1

输入: text   =   "nlaebolko" \texttt{text = "nlaebolko"} text = "nlaebolko"
输出: 1 \texttt{1} 1

示例 2:

示例 2

输入: text   =   "loonbalxballpoon" \texttt{text = "loonbalxballpoon"} text = "loonbalxballpoon"
输出: 2 \texttt{2} 2

示例 3:

输入: text   =   "leetcode" \texttt{text = "leetcode"} text = "leetcode"
输出: 0 \texttt{0} 0

数据范围

  • 1 ≤ text.length ≤ 10 4 \texttt{1} \le \texttt{text.length} \le \texttt{10}^\texttt{4} 1text.length104
  • text \texttt{text} text 全部由小写英语字母组成

解法

思路和算法

要组成一个单词 “balloon" \text{``balloon"} “balloon",需要使用 1 1 1 ‘b’ \text{`b'} ‘b’ 1 1 1 ‘a’ \text{`a'} ‘a’ 2 2 2 ‘l’ \text{`l'} ‘l’ 2 2 2 ‘o’ \text{`o'} ‘o’ 1 1 1 ‘n’ \text{`n'} ‘n’。为了计算能组成单词 “balloon" \text{``balloon"} “balloon" 的最大数量,需要统计字符串 text \textit{text} text 中这 5 5 5 个字母的出现次数,其余字母忽略。

在单词 “balloon" \text{``balloon"} “balloon" 中,字母 ‘b’ \text{`b'} ‘b’ ‘a’ \text{`a'} ‘a’ ‘n’ \text{`n'} ‘n’ 各出现 1 1 1 次,因此能组成单词 “balloon" \text{``balloon"} “balloon" 的最大数量一定不超过这 3 3 3 个字母中的任意字母的出现次数。

在单词 “balloon" \text{``balloon"} “balloon" 中,字母 ‘l’ \text{`l'} ‘l’ ‘o’ \text{`o'} ‘o’ 各出现 2 2 2 次,因此能组成单词 “balloon" \text{``balloon"} “balloon" 的最大数量一定不超过这 2 2 2 个字母中的任意字母的出现次数除以 2 2 2

在统计字符串 text \textit{text} text 中这 5 5 5 个字母的出现次数之后,计算满足上述要求的最大值,即为能组成单词 “balloon" \text{``balloon"} “balloon" 的最大数量。

代码

class Solution {
    public int maxNumberOfBalloons(String text) {
        int bCount = 0, aCount = 0, lCount = 0, oCount = 0, nCount = 0;
        int length = text.length();
        for (int i = 0; i < length; i++) {
            char c = text.charAt(i);
            if (c == 'b') {
                bCount++;
            } else if (c == 'a') {
                aCount++;
            } else if (c == 'l') {
                lCount++;
            } else if (c == 'o') {
                oCount++;
            } else if (c == 'n') {
                nCount++;
            }
        }
        int maxCount = Integer.MAX_VALUE;
        maxCount = Math.min(maxCount, bCount);
        maxCount = Math.min(maxCount, aCount);
        maxCount = Math.min(maxCount, lCount / 2);
        maxCount = Math.min(maxCount, oCount / 2);
        maxCount = Math.min(maxCount, nCount);
        return maxCount;
    }
}

复杂度分析

  • 时间复杂度: O ( n + ∣ Σ ∣ ) O(n + |\Sigma|) O(n+Σ),其中 n n n 是字符串 text \textit{text} text 的长度, Σ \Sigma Σ 是字符集,这道题中字符集为单词 “balloon" \text{``balloon"} “balloon" 中出现的不同字母, ∣ Σ ∣ = 5 |\Sigma| = 5 Σ=5。首先遍历 text \textit{text} text 计算每个字符在 text \textit{text} text 中出现的次数,时间复杂度是 O ( n ) O(n) O(n),然后根据每个字符的出现次数计算能组成单词 “balloon" \text{``balloon"} “balloon" 的最大数量,时间复杂度是 O ( ∣ Σ ∣ ) O(|\Sigma|) O(Σ),因此总时间复杂度是 O ( n + ∣ Σ ∣ ) O(n + |\Sigma|) O(n+Σ)

  • 空间复杂度: O ( ∣ Σ ∣ ) O(|\Sigma|) O(Σ),其中 Σ \Sigma Σ 是字符集,这道题中字符集为单词 “balloon" \text{``balloon"} “balloon" 中出现的不同字母, ∣ Σ ∣ = 5 |\Sigma| = 5 Σ=5。需要记录单词 “balloon" \text{``balloon"} “balloon" 中出现的每个字符在 text \textit{text} text 中出现的次数。

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

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

相关文章

无线通信信号传输模型

1. 概述 在移动通信网的规划阶段和网络优化期间&#xff0c;最重要的传播问题是路径损耗&#xff0c;它代表大尺度传播特性&#xff0c;具有幂定律的传播特征。路径损耗是移动通信系统规划设计的一个重要依据&#xff0c;对蜂窝设计中的覆盖范围、信噪比、远近效应都有影响。因…

css色彩主题适配思路

网站主题&#xff0c;之前一直考虑的是通过替换css文件来实现&#xff0c;这种方式虽然可以&#xff0c;但不够方便。毕竟要写两套css主题&#xff0c;需要花费足够多的时间来适配。 后来琢磨出了一点东西出来&#xff0c;发现通过修改root里的css变量来实现&#xff0c;比较优…

计算机研究生就业方向之去银行券商信息技术部门

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么&#xff0c;如果你只是转码&#xff0c;那么你不一定要考研&#xff0c;至少以下几个职位研究生是没有啥优势的&#xff1a; 1&#xff0c;软件测试工程师&#xff08;培训一下就行&#xff09; 2&#xff0c;前…

NR HARQ(一)概述

HARQ是MAC层的快速重传机制&#xff0c;5G部分HARQ相关内容分布在38.331,38.321,38.213,38.214,38.212,38.211等spec中&#xff0c;这篇仅仅针对NR HARQ 进行简单的概括梳理。 NR中上下行HARQ均为异步HARQ&#xff1b;NR中每个HARQ反馈信息可以针对一个上/下行 TB块&#xff0c…

PDF文件怎么打印?分享两种打印方法

如何将PDF文件打印出来呢&#xff1f;大家在使用PDF文件的时候&#xff0c;在确定一份文件没有问题的时候&#xff0c;会选择将文件打印出来使用&#xff0c;有很多小伙伴身边有打印设备&#xff0c;但是不知道怎么打印&#xff0c;今天小编给大家分享两种打印方法&#xff0c;…

Resolution-robust Large Mask Inpainting with Fourier Convolutions 阅读笔记

基于傅里叶卷积的鲁棒分辨率大Mask修补 WACV 2022 论文链接 代码链接 图1&#xff1a;本文提出的方法可成功修复大区域&#xff0c;并很好处理具有复杂重复结构的图像。该方法在256256低分辨率下训练也能泛化到高分辨率图像上。 摘要&#xff1a; 现代图像修复技术主要受阻于大…

基于intel平台车载M12网管交换机方案,13路网口,支持bypass功能

概述&#xff1a;XM-5130是二层网管型以太网交换机&#xff0c;该产品前面板提供13路100M自适应以太网接口、4路车辆间带链路聚合及bypass功能的以太网接口&#xff0c;接口通过M12端子形式提供。该产品适用于振动、温度、湿度、电源波动变化大、电磁干扰复杂的恶劣工作环境。设…

传统大型国企云原生转型,如何解决弹性、运维和团队协同等问题?

作者&#xff1a;王彬、杏祉尧、黄枫 项目背景 贵州酒店集团有限公司于 2019 年 2 月 28 日注册成立&#xff0c;是经贵州省人民政府批准并授权省国资委履行出资人职责的省管大一型企业&#xff0c;全资及控股子企业 23 家&#xff0c;自营及委管酒店&#xff08;项目&#x…

Nacos的持久化和集群部署

###目前网络模式为&#xff1a;bridge 1.docker mysql:5.7的持久化存储及远程连接 1.下拉镜像 docker pull mysql/mysql-server:5.7 注&#xff1a;后面的mysql标签是版本号&#xff0c;可选择&#xff0c;有&#xff1a;5.5/5.6/5.7/8.0 2.在宿主机中相关目录&#…

单片机内部组成

目录 中央处理器&#xff08;CPU&#xff09; 内部数据存储器&#xff08;128B RAM&#xff09; 内部程序存储器&#xff08;4KB ROM&#xff09; 定时/计数器 可编程I/O口 串行接口 中断控制系统 时钟电路 中央处理器&#xff08;CPU&#xff09; 中央处理器是单片机的…

测试工作干了7年,却被实习生代替,是实习生太牛了,还是我们太弱了?

前几天有个朋友向我哭诉&#xff0c;说她在公司工作&#xff08;软件测试&#xff09;了7年了&#xff0c;却被一个实习生代替了&#xff0c;该何去何从&#xff1f; 这是一个值得深思的问题&#xff0c;作为职场人员&#xff0c;我们确实该思考&#xff0c;我们的工作会被实习…

详解文件篇(待更)

目录前言一、背景知识1.文件的真面目2.对文件进行的操作3.所谓的打开文件究竟是在干啥&#xff1f;4.文件可能存在的位置&#xff1f;5.文件操作的幕后主使者二、复习C语言中的相关文件操作1. 源代码&#xff1a;形成一个file.txt的文件2. 以"r"的方式打开文件3. 以&…

C++异常详解

文章目录前言一、C语言传统的处理错误的方式二、C异常概念三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范四、C标准库的异常体系五、自定义异常体系六、异常的优缺点C异常的优点C异常的缺点总结前言 正文开始&#xff01; 一、C语言传统的处理…

大数据:Hive3.x安装部署和配置

文章目录Hive 简介一&#xff0c;Hive 下载和安装1&#xff09;下载hive2&#xff09;安装hive二&#xff0c;Hive 部署1&#xff09;添加hive-site.xml配置2&#xff09;上传mysql jdbc驱动到hive安装包lib下3&#xff09;初始化元数据库4&#xff09;启动hive5&#xff09;be…

数字时代,你还不了解数据仓库吗?

事实上&#xff0c;很多人在看到数据仓库的第一眼&#xff0c;就把数据仓库当成了数据库。当然这也很正常&#xff0c;毕竟从名字来看这两者确实区别不大&#xff0c;真正区分两者的是定位、作用等更深一层的东西。今天我们就来详细了解一下数据仓库&#xff0c;从概念、特点、…

【网络】一文带你了解计算机网络基础

我们在学校中&#xff0c;相信大家都学过计算机四门必修课之一的计算机网络&#xff0c;那么今天简单的总结一下计算机网络的基础和原理&#xff0c;有需要朋友&#xff0c;可以点赞收藏。 一文带你了解计算机网络基础1、 网络 7 层架构2、 TCP/IP原理2.1 网络访问层(Network A…

MongoDB的入门及使用

文章目录1、MongoDB组成2、基本指令3、安装Studio 3T4、操作语句db操作collection操作document操作document 查询5、开发使用1、MongoDB组成 MongoDB中有三个概念需要大家了解&#xff1a;数据库、集合、文档 数据库database&#xff1a; 数据库是一个仓库&#xff0c;在仓库中…

【Docker】安装容器(Tomcat/MySQL/Redis)

文章目录Docker安装镜像容器安装 Tomcat安装 MySQL安装 MySQL实战版安装 RedisDocker安装镜像容器 步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 - 服务端口映射 停止容器 移除容器 安装 Tomcat 1、DockerHub上查找Tomcat镜像 docker search tomcat 2、从DockerHub拉取Tomcat镜…

volatile synchronized Lock

参考博客&#xff1a;https://www.cnblogs.com/cg-ww/p/14540450.html https://zhuanlan.zhihu.com/p/563597528?utm_id0 synchronized修饰变量&#xff0c;https://blog.csdn.net/dlf123321/article/details/53515756 详解synchronized关键字&#xff0c;https://zhuanlan.zh…

一文回顾Aleo到底有多卷

年底的Aleo是区块链行业的一场大事&#xff0c;由于融资超过两亿美元这样的光环围绕&#xff0c;Aleo出道即备受关注&#xff0c;网上不少教程也是满天飞&#xff0c;甚至在激励测试开始之前&#xff0c;就已经非常卷了&#xff0c;而大家都在认为激励测试在两三周之后开始&…