document.write('
本题目可以使用类似快速排序的方法处理,可以用两个索引分别指向字符串的首和尾,首索引正向遍历字符
串,找到第一个大写字母,尾索引逆向遍历字符串,找到第一个小写字母,交换两个索引位置的字符,然后
将两个索引沿着相应的方向继续向前移动,重复上述步骤,直到首索引大于或等于尾索引为止。具体实现如
下:
# 对字符数组排序, 使得小写字母在前, 大写字母在后
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
程序的运行结果为:
fbceDA
算法性能分析:
这种方法对字符串只进行了一次遍历,因此,算法的时间复杂度为O(N),其中,N是字符串的长度。
');