也已经有些许时间没有写写算法了,先来道简单的Leetcode题练练手吧。
题目:
1189_最大气球数量
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-balloons
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
小编刚看到这里也是没想到什么好的算法,也就是直接暴力解除法吧。思路如下
1、先对text字符串存储成字典,例:dict_1{‘a’:1…}
2、依次对"ballon“进行循环,如果字母i在dict_1内,则dict_1[i] = dict_1[i] - 1
代码如下:
def maxNumberOfBalloons(text):
dict_1 = {}
for i in text:
if i not in dict_1:
dict_1.setdefault(i, 1)
else:
dict_1[i] += 1
all_num = 0
while True:
a = 'e'
str_ = ''
count = 0
for i in 'balloon':
try:
if dict_1[i] > 0:
dict_1[i] = dict_1[i] - 1
count += 1
str_ = str_ + str(i)
else:
a = 'a'
break
if count == 6:
all_num += 1
break
except:
a = 'a'
break
if a == 'a':
break
return all_num
maxNumberOfBalloons("ballon")
同时将代码提交至Leetcode:
内存消耗有点大,后期可能在变量这一块进行缩减优化…