题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
# 1.排序方式:全部转换成小写字母进行排序
# 2.用for i in str1: i.isupper() +upindex[] 记录大写字母转化的位置,排序后再转换回去。
# 3.记录下 not i.isalpha() 的字符和位置index 后续 insert。采用栈pop()的特性一个一个insert
while True:
try:
str1=input()
not_alpha=[]
not_alpha_index=[]
alpha_stack=[]
for i in range(len(str1)): #不能 in str1 否则用str1.index来记录索引的话,会照成相等元素的索引值
#记录第一个出现的索引。所以为了要记录索引的话,遍历必须用range(len)
if not str1[i].isalpha():
not_alpha.append(str1[i])
not_alpha_index.append(i)
elif str1[i].isalpha():
alpha_stack.append(str1[i])
result=sorted(alpha_stack,key=lambda x:x.lower()) #key 按照某种规则对原序列元素进行排序但是不改变元素本身。
for i in range(len(not_alpha_index)):
result.insert(not_alpha_index[i],not_alpha[i])
print("".join(result))
except:
break