def get_lower_upper_letter(list_data): """ 有一个大小写做成的字符串 ,将其修改所有的小写字母排在大写字母前面(大写或小写字母之间不要求保持原来次序) 如果可以进来选择时间和空间效率高的算法 :return: """ # list_lower = [] # list_upper = [] # for i in range(len(str_data)): # if ord("a") <= ord(str_data[i]) and ord(str_data[i]) <= ord("z"): # list_lower.append(str_data[i]) # if ord("A") <= ord(str_data[i]) and ord(str_data[i]) <= ord("Z"): # list_upper.append(str_data[i]) # # str_res = "".join(list_lower+list_upper) # print(str_res) i = 0 j = len(list_data) - 1 while i <= j: while i <= j and ord("a") <= ord(list_data[i]) and ord(list_data[i]) <= ord("z"): i += 1 while i <= j and ord("A") <= ord(list_data[j]) and ord(list_data[j]) <= ord("Z"): j -= 1 # 注意,一定要有这个判定条件 if i <= j: list_data[i], list_data[j] = list_data[j], list_data[i] return "".join(list_data) if __name__ == '__main__': # nqwjidadaslmdHUIHUJIJOJJOJIJQM print(get_lower_upper_letter(list("nqwjiHUIHUdaJIJOJdaslmdJOJIJQM")))