题解 | #字符串排序-两种方法#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
方法一:使用冒泡排序的思路
str1=input()
alist = list(str1)
alen = len(alist)
for i in range(alen-1):
j=0
while j < alen-i-1:
k=1 #寻找下一个可以比较的字母,k是步长
if alist[j].isalpha(): #如果当前位置不是字母,向下
while j+k<alen-i and not alist[j+k].isalpha():
k+=1 #找到下一个可以比较的字母
if j+k>alen-i-1:
break #如果后面都不是字母,后面都没有必要在做比较了
if alist[j].lower()> alist[j+k].lower():
alist[j],alist[j+k]=alist[j+k],alist[j]
#如果当前位置字母的小写比下一个大,那么交换到下一个
j+=k #j直接增加步长k,因为中间的都不是字母
print("".join(alist))
方法二:使用sort,先把字母挑出来排序,再补充非字母字符
str1=input()
alist=[]
for ch in str1:
if ch.isalpha():
alist.append(ch)
alist.sort(key=str.lower)
k=0
for i in range(len(str1)):
if not str1[i].isalpha():
k+=1
print(str1[i],end='')
else:
print(alist[i-k],end='')