题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
英文字母从 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))