leetcode 1189. “气球” 的最大数量

89 阅读2分钟

[toc] leetcode 1189. “气球” 的最大数量.

题目描述

  1. “气球” 的最大数量

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

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

示例 1:

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

输入:text = "loonbalxballpoon" 输出:2 示例 3:

输入:text = "leetcode" 输出:0

提示:

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

解题思路

法1

模拟哈希表:

  1. 简历映射哈希表map[byte]int,记录balloon中出现的字母的数量,

  2. 将l,o的数量除以2(因为出现了两次)

  3. 返回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多平台发布