“气球” 的最大数量

mac2024-03-06  26

“气球” 的最大数量

题目

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。

示例

示例 1: 输入:text = "nlaebolko" 输出:1 示例 2: 输入:text = "loonbalxballpoon" 输出:2 示例 3: 输入:text = "leetcode" 输出:0

解题

思路

所有的单词都是26个英文字母组成的,单词中的字母都是小写的,a-z在ASCII码表中对应的是97-122,定义一个长度为26的int数组,字符减去97即是该字符在数组中的存储位置<br/> 这样就可以把所有的字符统计出个数,这样做还有一个好处,就是没有出现的字符会默认为0<br/> 因为"balloon"中字符l和o出现了两次,所以我们要把'l'和'o'字符的个数除以2<br/> 最后字符b a l o n出现次数最少的即为所求。 时间复杂度为O(n),空间复杂度为O(1)

代码

class Solution { public int maxNumberOfBalloons(String text) { int[] letters = new int[26]; for (char ch : text.toCharArray()) { letters[ch - 97]++; } letters['l' - 97] /= 2; letters['o' - 97] /= 2; int ans = Integer.MAX_VALUE; for (char ch : "balon".toCharArray()) { if (letters[ch - 97] < ans) { ans = letters[ch - 97]; } } return ans; } }
最新回复(0)