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

Posted 想名真难

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1189. “气球” 的最大数量相关的知识,希望对你有一定的参考价值。

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

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

示例 1:

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

示例 2:

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

示例 3:

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

1189. “气球” 的最大数量 力扣



构成单词“balloon”, 需要2个"l"  "o",    1个"b" "a" "n", 

  1. 统计出每个字符出现的次数放到字典中
  2. 然后遍历"balon"计算数量取最小值即可,
    1. "l""o" 计算数量要除2。
    2. 其他字母的数量就是本身
class Solution 
    func maxNumberOfBalloons(_ text: String) -> Int 

        // 统计输入的字符串中每个字母出现的次数
        var dic = [Character:Int]()
        for one in text 
            let count = dic[one] ?? 0
            dic[one] = count + 1
        

        var result = Int.max
        // 以balloon做key, 统计每个字母出现的次数,
        // l和o每个需要消耗数量2个,
        // 其他字母出现的次数 就是可能的最大组成次数
        for key in "balon" 
            if let count = dic[key] 
                if key == "l" || key == "o" 
                    result = min(result, count / 2)
                 else 
                    result = min(result, count)
                
             else 
                return 0
            

        
        return result
    

时间复杂度O(N), 空间复杂度O(1)

 

以上是关于LeetCode 1189. “气球” 的最大数量的主要内容,如果未能解决你的问题,请参考以下文章

1189. “气球” 的最大数量『简单』

「 每日一练,快乐水题 」1189. “气球” 的最大数量

「 每日一练,快乐水题 」1189. “气球” 的最大数量

力扣 1189“气球” 的最大数量

力扣 1189“气球” 的最大数量

LeetCode --- 字符串系列 ---“气球” 的最大数量