python字符拆分,统计输入字符串中的字母有多少个规定单词

给你一个字符串 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格式。

发布了20 篇原创文章 · 获赞 6 · 访问量 993

猜你喜欢

转载自blog.csdn.net/zhangyunwei_Blog/article/details/105643020