寻找蛇形字符串python实现

输入一个字符串(不含空格),请寻找输入中包含的所有蛇形字符串。

1. 蛇形字符串的定义:

    1.1 字符对定义:字符对有同一字母的大小组成(前大后小),如:Aa,Dd。

    1.2 蛇形字符串中包含的字符对必须是连续的字母,并按照字母排序表排序,如:AaBbCc。

2. 从输入字符串中寻找字符组成蛇形字符串(字符顺序不限),符合规则:

    2.1 每次寻找最长的蛇形字符串。

    2.2 使用过的字符不能重复使用。

3. 输出按首字母排序,如果首字母相同则按长度排序。

def run():
    string = input()
    out_ls = []
    while True:
        char_ls = [x for x in string if ('A'<=x<='Z') and (x.lower() in string)]
        if len(char_ls)==0:
            break
        select_ls = list(set(char_ls))
        loc_ls = ['_']*26
        for x in select_ls:
            loc_ls[ord(x)-ord('A')] = x
        loc_str = ''.join(loc_ls)
        item_ls = loc_str.split('_')
        item_ls = sorted(item_ls, key=lambda x: len(x))
        out_ls.append(item_ls[-1])
        string_ls = [x for x in string]
        for x in item_ls[-1]:
            string_ls.remove(x)
            string_ls.remove(x.lower())
        string = ''.join(string_ls)
    if len(out_ls)==0:
        print('Not Found')
    else:
        out_ls = sorted(out_ls, key=lambda x: len(x), reverse=True)
        out_ls = sorted(out_ls, key=lambda x: x[0])
        for x in out_ls:
            for xx in x:
                print(xx+xx.lower(), end='')
            print()
run()

测试一

输入:SxxsrR^AaSs

输出:

    Aa
    RrSs
    Ss

测试二

输入:SwSE$345456DD$$#E#eswsxxsssAAWDxxdderfvcRFER65645g^^%%^UnbnvccTRChnyvcxcvVCFR

输出:

    CcDdEeFf
    CcDdEe
    RrSs
    Ss
    VvWw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值