英文字母从 A 到 Z 排列,不区分大小写
同一个英文字母的大小写同时存在时,按照输入顺序排列

创建一个长度为 26 的列表,对应 26 个英文字母。列表每一项也是个列表,将相同字母按被发现的顺序存入列表中。

非英文字母的其它字符保持原来的位置

扫描字符串时,记住每个其他字符出现的位置。扫描完字符串后,先将字母组合在一起,然后按照记录的位置重新插入其他字符即可。

letters = [[] for _ in range(26)]
chars = []
ord_a = ord('a')
ord_A = ord('A')

s = input()
for index_, i in enumerate(s):
    if i.islower():
        index = ord(i) - ord_a
        letters[index].append(i)
    elif i.isupper():
        index = ord(i) - ord_A
        letters[index].append(i)
    else:
        chars.append((index_, i))

r = []
for i in letters:
    for j in i:
        r.append(j)
for i in chars:
    r.insert(i[0], i[1])
print("".join(r))