方法一 个人方法:
统计text字符串中'b'、'a'、'l'、'o'、'n'?这几个字符出现的次数
l和n需要两个才能拼成一个balloon,所以碰到l和o加1,其他字符加2
最后求出出现次数最少的那个字符再除以2就是能拼凑成的单词数量,避免出现小数要使用向下取整
var maxNumberOfBalloons = function(text) {
var arr={b:0,a:0,l:0,o:0,n:0},min=9999
for(const char of text){
if(arr[char]>=0){
if(char=='l' || char=='o'){
arr[char]++
}else{
arr[char]+=2
}
}
}
for(const char in arr){
min=arr[char]<min?arr[char]:min
}
console.log(arr,min)
min=Math.floor(min/2)
return min
};
消耗时间和内存情况:
方法二 统计法
思路和方法一差不多,但写法有区别
var maxNumberOfBalloons = function(text) {
const cnt = new Array(5).fill(0);
for (const ch of text) {
if (ch === 'b') {
cnt[0]++;
} else if (ch === 'a') {
cnt[1]++;
} else if (ch === 'l') {
cnt[2]++;
} else if (ch === 'o') {
cnt[3]++;
} else if (ch === 'n') {
cnt[4]++;
}
}
cnt[2] = Math.floor(cnt[2] / 2);
cnt[3] = Math.floor(cnt[3] / 2);
return _.min(cnt);
};
消耗时间和内存情况: