[toc] leetcode 1189. “气球” 的最大数量.
题目描述
- “气球” 的最大数量
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例 1:
输入:text = "nlaebolko" 输出:1 示例 2:
输入:text = "loonbalxballpoon" 输出:2 示例 3:
输入:text = "leetcode" 输出:0
提示:
1 <= text.length <= 10^4 text 全部由小写英文字母组成
解题思路
法1
模拟哈希表:
-
简历映射哈希表map[byte]int,记录balloon中出现的字母的数量,
-
将l,o的数量除以2(因为出现了两次)
-
返回map中value最小的值
因为记录字母有限且较少,我们可以使用一个int数组来模拟哈希表的功能
[5]int,其中0-4号位置分别对应b,a,l,o,n的数量可以略微提高性能
- 时间复杂度(O(n))
- 空间复杂度(O(1))
执行结果
法1
func maxNumberOfBalloons(text string) int {
//模拟哈希映射表
m:=[]int{0,0,0,0,0}
记录值
for _,v:=range text {
switch v{
case 'b' :
m[0]++
break
case 'a' :
m[1]++
break
case 'l' :
m[2]++
break
case 'o' :
m[3]++
break
case 'n' :
m[4]++
break
}
}
//l与o除以2
m[2]/=2
m[3]/=2
//最小的数量
cont:=10000
for _,v:=range m{
if v<cont{
cont=v
}
}
return cont
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2 MB , 在所有 Go 提交中击败了 94.59% 的用户 通过测试用例: 25 / 25 炫耀一下:
本文由mdnice多平台发布