试题WL_1

#-----------------------------------------------#
#题目描述:有如下字符串 “{a,b}c{d,e}",它表示多个字符串集合,其中括号{a,b}表示集合中的字符串可以任意取一个,
# 所以原字符串可以展开成如下四个字符串:“acd" ,"bcd","ace","bce"
#请写一段代码,把包含的字符串展开成多个
#输入:
#    “{a,b}c{d,e}"
#输出:
#    {"acd","ace","bcd","bce"}
#-------------------------------------------------#
def permutation_and_combination(ss, k):
    global ret,x
    if len(ss)==k:
        ret= ret+'"'+x+'"'+','
        return
    temp=ss[k]
    for i in temp:
        x=x+i
        permutation_and_combination(ss,k+1)
        x=x[:-1]
def divided(str):
    #先获取括号的位置,通过括号找集合
    index=[]
    for i in range(len(str)):
        if str[i]=="{" or  str[i]=="}":
            index.append(i)
    #截取 各个集合
    ss=[]
    if len(index)!=0:
        for j in range(len(index)-1):
            s=str[index[j]+1:index[j+1]].split(",")
            ss.append(s)
        #排列组合
        permutation_and_combination(ss,0)
        print('{' + ret[:-1] + '}')
    else:
        #没有括号直接返回
        print('{' +str+ '}')
str=input("请输入字符串:")
ret=""
x=''
#划分有几个集合,并排列组合
ss=divided(str)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值