题解 | #字符串排序-两种方法#

字符串排序

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='')

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务