题目描述
给你一个字符串 text
,你需要使用 text
中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text
中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例 1:
输入:text = "nlaebolko" 输出:1
示例 2:
输入:text = "loonbalxballpoon" 输出:2
示例 3:
输入:text = "leetcode" 输出:0
提示:
1 <= text.length <= 104
text
全部由小写英文字母组成
方法一使用数组记录ball
public int maxNumberOfBalloons(String text) {
char []c =text.toCharArray();
int []arr=new int[5];
for (char ch :c) {
switch (ch){
case 'b':
arr[0]++;
break;
case 'a':
arr[1]++;
break;
case 'l':
arr[2]++;
break;
case 'o':
arr[3]++;
break;
case 'n':
arr[4]++;
break;
}
}
int min=Integer.MAX_VALUE;
arr[2]/=2;
arr[3]/=2;
for (int i = 0; i <arr.length ; i++) {
min= Math.min(min,arr[i]);
}
return min;
}
方法二使用Map集合
public int maxNumberOfBalloons(String text) {
char []c =text.toCharArray();
int []arr=new int[5];
for (char ch :c) {
switch (ch){
case 'b':
arr[0]++;
break;
case 'a':
arr[1]++;
break;
case 'l':
arr[2]++;
break;
case 'o':
arr[3]++;
break;
case 'n':
arr[4]++;
break;
}
}
int min=Integer.MAX_VALUE;
arr[2]/=2;
arr[3]/=2;
for (int i = 0; i <arr.length ; i++) {
min= Math.min(min,arr[i]);
}
return min;
}
重点其实统计传过来的字符串中的每个balloon气球中每个字母出现的次数,注意l和o最后要除以二,最后返回每个字母出现最小的个数即为balloon的个数