Eighteen Blog

题目解析:

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。

字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。

示例

示例 1:

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

示例 2:

1
2
输入:text = "loonbalxballpoon"
输出:2

提示:

1
2
1 <= text.length <= 10^4
text 全部由小写英文字母组成

解题思路

先找出各个字母的个数,然后找出其中的最小值(o,l数量除以2)。
用match正则检测字符串中符合条件的字母,其长度即为该字母在字符串中的个数。

解答

1
2
3
4
5
6
7
8
9
10
11
12
var maxNumberOfBalloons = function(text) {
let regexp, singleNum, min = text.length;
for (let i in "balon") {
regexp = new RegExp("balon"[i], 'g');
singleNum = text.match(regexp).length;
if ("balon"[i]) == 'o' || "balon"[i]) == 'l') {
singleNum = Math.floor(singleNum / 2)
}
min = (min <= singleNum) ? min : singleNum;
}
return min;
};

解题思路二

用split分割字符串,分割之后的数组长度-1 就是该字符(分隔符)在该字符串中的个数。

解答二

1
2
3
4
5
6
7
8
9
10
11
var maxNumberOfBalloons = function(text) {
let singleNum, min = text.length;
for (let i in "balon") {
singleNum = text.split("balon"[i]).length - 1;
if ("balon"[i]) == 'o' || "balon"[i]) == 'l') {
singleNum = Math.floor(singleNum / 2)
}
min = (min <= singleNum) ? min : singleNum;
}
return min;
};

 评论