“如何对大小写字母组成的字符数组排序”(python)

题目描述:有一个由大小写字母组成的字符串,请对它进行重新组合,使得其中的所有小写字母排在大写字母的前面(大写字母或小写字母之间不要求保持原来的次序)

分析与解答:本题可以使用类似快速排序的方法处理,可以用两个索引分别指向字符串的首和尾,首索引正向遍历字符串,找到第一个大写字母,尾索引逆向遍历字符串,找到第一个小写字母,交换两个索引位置的字符,然后将两个索引沿着相应的方向继续向前移动,重复上述步骤,直到首索引大于或等于尾索引位置。

def ReverseArray(ch):
    lens = len(ch)
    begin = 0
    end = lens - 1

    while begin < end:
        # 正向遍历找到下一个大写字母
        while ch[begin] > 'a' and ch[end] <= 'z' and end > begin:
            begin += 1

        # 逆向遍历找到下一个小写字母
        while ch[end] > 'A' and ch[end] <= 'Z' and end > begin:
            end -= 1

        temp = ch[begin]
        ch[begin] = ch[end]
        ch[end] = temp

if __name__ == "__main__":
    ch = list("AbcDef")
    ReverseArray(ch)
    i = 0
    while i < len(ch):
        print(ch[i])
        i += 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值