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

输入:text = "nlaebolko"
输出:1
示例 2:

输入:text = "loonbalxballpoon"
输出:2
示例 3:
输入:text = "leetcode"
输出:0
提示:
- 1 <= text.length <= 10^4
- text 全部由小写英文字母组成
注意:本题与 2287.重排字符形成目标字符串 相同。
思路
使用字符串 text 中的字母拼凑单词 balloon,求最多能拼出多少个。
单词由 1 个 a、1 个 b、1 个 n、2 个 l 和 2 个 o 组成。对 text 中的字母计数,统计相关字母频次的最小值即可(l 与 o 需要除以 2)。
代码
/**
* @date 2026-06-22 9:05
*/
public class MaxNumberOfBalloons1189 {
public int maxNumberOfBalloons_v1(String text) {
char[] cnt = new char[26];
for (char c : text.toCharArray()) {
cnt[c - 'a']++;
}
int res = Integer.MAX_VALUE;
res = Math.min(res, cnt[0]);
res = Math.min(res, cnt[1]);
res = Math.min(res, cnt[11] / 2);
res = Math.min(res, cnt[13]);
res = Math.min(res, cnt[14] / 2);
return res;
}
}
性能
