​1189. “气球” 的最大数量​

给你一个字符串 ​​text​​​,你需要使用 ​​text​​ 中的字母来拼凑尽可能多的单词 “balloon”(气球)

字符串 ​​text​​ 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”

示例 1:

LeetCode 1189. “气球” 的最大数量_空间复杂度

输入:text = "nlaebolko"
输出:1

示例 2:

LeetCode 1189. “气球” 的最大数量_空间复杂度_02

输入:text = "loonbalxballpoon"
输出:2

示例 3:

输入:text = "leetcode"
输出:0

提示:

  • ​1 <= text.length <= 10^4​
  • ​text​​ 全部由小写英文字母组成

二、方法一

模拟

class Solution {
public int maxNumberOfBalloons(String text) {
int[] cnt = new int[5];
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c == 'b') {
cnt[0]++;
} else if (c == 'a') {
cnt[1]++;
} else if (c == 'l') {
cnt[2]++;
} else if (c == 'o') {
cnt[3]++;
} else if (c == 'n') {
cnt[4]++;
}
}
cnt[2] /= 2;
cnt[3] /= 2;
return Arrays.stream(cnt).min().getAsInt();
}
}

复杂度分析

  • 时间复杂度:O(n + C),其中 nn 为字符串的长度,C 表示单词中字符的种类数,在本题中 C = 5。需要遍历一遍字符串,并求出单词中字符的最小数目。
  • 空间复杂度:O(C ),C 表示单词中字符的种类数,在本题中 C=5。需要 O(C ) 的空间存储字符的统计数目。