admin 管理员组文章数量: 1087652
“气球” 的最大数量
“气球” 的最大数量
题目
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。
示例
示例 1:
输入:text = "nlaebolko"
输出:1示例 2:
输入:text = "loonbalxballpoon"
输出:2示例 3:
输入:text = "leetcode"
输出:0
解题
思路
所有的单词都是26个英文字母组成的,单词中的字母都是小写的,a-z在ASCII码表中对应的是97-122,定义一个长度为26的int数组,字符减去97即是该字符在数组中的存储位置<br/>这样就可以把所有的字符统计出个数,这样做还有一个好处,就是没有出现的字符会默认为0<br/>因为"balloon"中字符l和o出现了两次,所以我们要把'l'和'o'字符的个数除以2<br/>最后字符b a l o n出现次数最少的即为所求。时间复杂度为O(n),空间复杂度为O(1)
代码
class Solution {public int maxNumberOfBalloons(String text) {int[] letters = new int[26];for (char ch : text.toCharArray()) {letters[ch - 97]++;}letters['l' - 97] /= 2;letters['o' - 97] /= 2;int ans = Integer.MAX_VALUE;for (char ch : "balon".toCharArray()) {if (letters[ch - 97] < ans) {ans = letters[ch - 97];}}return ans;}
}
本文标签: “气球” 的最大数量
版权声明:本文标题:“气球” 的最大数量 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1687331037a90379.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论