题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

虽然写出来了但是还是写的太复杂了

s = input()
# A-Z顺序排列
alpha_table = []
for i in range(26):
    alpha_table.append(chr(ord("a")+i))
#排序
# 枚举法分离出字母&非字母
enumerate_s = []
for i in range(len(s)):
    enumerate_s.append([i,s[i]])
alpha_list= []
for i in enumerate_s:
    if i[1].isalpha():
        alpha_list.append(i[1])
# 字母列表排序(冒泡)
for i in range(len(alpha_list)-1): # 交换轮数
    for j in range(len(alpha_list)-1-i): # 交换次数
        if alpha_table.index(alpha_list[j].lower()) > alpha_table.index(alpha_list[j+1].lower()):
            alpha_list[j],alpha_list[j+1] = alpha_list[j+1],alpha_list[j]
# 按顺序插回字母位置
num = 0
for i in range(len(alpha_list)):
    while 1:
        if enumerate_s[i+num][1].isalpha():
            enumerate_s[i+num][1] = alpha_list[i]
            break
        else:
            num += 1
#输出结果
for i in range(len(enumerate_s)):
    print(enumerate_s[i][1],end="")

后面才知道字符串可以直接比较不用自己创表,还有sorted函数的key的用法,化简一下:

s = input()

#排序
# 枚举法分离出字母&非字母
enumerate_s = []
for i in range(len(s)):
    enumerate_s.append([i,s[i]])
alpha_list= []
for i in enumerate_s:
    if i[1].isalpha():
        alpha_list.append(i[1])
# 字母列表排序
alpha_list = sorted(alpha_list,key = lambda x:x.lower())
# 按顺序插回字母位置
num = 0
for i in range(len(alpha_list)):
    while 1:
        if enumerate_s[i+num][1].isalpha():
            enumerate_s[i+num][1] = alpha_list[i]
            break
        else:
            num += 1
#输出结果
for i in range(len(enumerate_s)):
    print(enumerate_s[i][1],end="")
全部评论

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务