LeetCode 1189. “气球” 的最大数量
原创
©著作权归作者所有:来自51CTO博客作者Daylight629的原创作品,请联系作者获取转载授权,否则将追究法律责任
给你一个字符串 text
,你需要使用 text
中的字母来拼凑尽可能多的单词 “balloon”(气球)。
字符串 text
中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。
示例 1:
输入:text = "nlaebolko"
输出:1
示例 2:
输入:text = "loonbalxballpoon"
输出:2
示例 3:
提示:
-
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 ) 的空间存储字符的统计数目。