python sorString 上升下降字符串

分析:本题目要求字符串内非重复正序+倒序+正序+倒序+..重新排列,例如aaaabbbbcccc,最后abccbaabccba效果
以下实现思路:1、把字符串借助序列set去重 2、sorted排序 3、取字符放到result,并在原有字符串s中replace删去 4、重复1和2过程,string重新去重排序;并用列表revserse倒序,重复3的过程取结果并删去。5、把以上过程while循环,判断条件为string非空。
用的知识点:
1、set(string),字符串set,去重,type变成序列
2、sorted()对序列排序,正序排列,type变成list
3、字符串replace实现删除。s.replace()
s.replace(old,new,1)代表替换第一个;s.replace(old,new)代表替换全部;s.repalce(old,'')代表删除
4、list.reverse()对列表反序排列
5、循环判断,while是否为空


代码:

def sorString(s):
    result = ''
    while len(s) > 0:

        s_temp = set(s)

        s_temp = sorted(s_temp)
        #print('s_temp',s_temp)

        for i in s_temp:
            result = result + i
            s = s.replace(i, '', 1)


        s_temp1 = sorted(set(s))
        #print('type(s_temp1)',type(s_temp1))
        s_temp1.reverse()
        #print('s_temp1',s_temp1)

        for i in s_temp1:
            result = result + i
            s = s.replace(i,'',1)
    print('result',result)

if __name__ == '__main__':
    s = "aaaabbbbcccc"
    sorString(s)
    s = "rat"
    sorString(s)
    s = "gggg"
    sorString(s)
    s = "spo"
    sorString(s)

运行结果:

result abccbaabccba
result art
result gggg
result ops

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值