给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。
输入:text = “loonbalxballpoon”
输出:2
输入:text = “leetcode”
输出:0
1 <= text.length <= 10^4
text 全部由小写英文字母组成
from itertools import combinations
# 将输入的字符串拆分单个字符
def indexCombinations(s):
ret = []
for i in s:
index_combs = i
ret.extend(index_combs)
return ret
# 根据n获得列表中的所有可能组合(n个元素为一组)
def combine(ret):
end_list = []
end_list.extend(combinations(ret, 7))
return end_list
def remo(ret):
ret.remove('b')
ret.remove('a')
ret.remove('l')
ret.remove('l')
ret.remove('o')
ret.remove('o')
ret.remove('n')
return ret
def asd(end_list, arr):
for m in end_list:
str_array = "".join(tuple(m))
if len(str_array) == 0:
continue
if str_array == 'balloon':
arr.append(str_array)
break
if ('b', 'a', 'l', 'l', 'o', 'o', 'n') not in end_list:
return arr
if ('b', 'a', 'l', 'l', 'o', 'o', 'n') in end_list:
remo(ret)
end_list = combine(ret)
asd(end_list, arr)
ret = []
ret = indexCombinations(input("请输入text:"))
end_list = combine(ret)
arr = []
asd(end_list, arr)
print("一共有" + str(len(arr)) + "个")
print(arr)
这是代码的运行结果展示
代码的介绍
这个程序要用到combinations函数,这是用来将字符串排列组合的函数
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
append() 方法用于在列表末尾添加新的对象。
extend()和append()的区别是:
list.append(object) 向列表中添加一个对象object
list.extend(sequence) 把一个序列seq的内容添加到列表中
music_media = ['compact disc', '8-track tape', 'long playing record']
new_media = ['DVD Audio disc', 'Super Audio CD']
music_media.append(new_media)
print music_media
>>>['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']]
使用append的时候,是将new_media看作一个对象,整体打包添加到music_media对象中。
music_media = ['compact disc', '8-track tape', 'long playing record']
new_media = ['DVD Audio disc', 'Super Audio CD']
music_media.extend(new_media)
print music_media
>>>['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']
使用extend的时候,是将new_media看作一个序列,将这个序列和music_media序列合并,并放在其后面。
remove() 函数用于移除列表中某个值的第一个匹配项,该方法没有返回值但是会移除列表中的某个值的第一个匹配项。(只删除第一个匹配的对象,然后就终止继续搜索)
Python 元组 tuple() 函数将列表转换为元组。
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
运行结果是
a-b-c
"".join(tuple(m)) 而这个的意思就是用“”(里边是空的代表字符之间是连接的),tuple(m)将m列表转化为元组,在.json转化为json格式。
if (‘b’, ‘a’, ‘l’, ‘l’, ‘o’, ‘o’, ‘n’) not in end_list: 循环列表,如果这个对象不再这个列表中中就运行if里边的代码。
str(len(arr)) 将len之后的数据转化成一个对象的string格式。