方法一 个人方法:
统计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=9999for(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);
};
消耗时间和内存情况: