题解 | 字符串排序

import re
line = input()
left = ''

#提取字符
char = re.findall('[a-zA-Z]', line)
char = ''.join(char)
# print(char)  AFamousSayingMuchAdoAboutNothing

#使用字典进行排序,使用 alpha.lower()作为判断条件和键值,收集保持了大小写不同的相同字符,然后按照键值排序。
chardic = {}
for i in char:
    if i.lower() not in chardic:
        chardic[i.lower()] = i
    else:
        chardic[i.lower()] += i       
orderstr= {key: chardic[key] for key in sorted(chardic)}
# print(orderchar)

#拼接字符串,再将排序后字符串重新列表化,得到排序字母列表
temp = [value for value in orderstr.values()]
orderchar = list(''.join(temp))    

#对初始字符串开始替换字母字符,每次替换用i计数,同时弹出脾虚字母列表,这样替换同步。
i = 0
while i < len(line):
    if not line[i].isalpha():
        left += line[i]
    else:
        if char:
            left += orderchar.pop(0)
        else:
            left += line[i]
    i+=1

print(left)
        

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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