题解 | #字符串排序#

字符串排序

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

'''
思路解析:
排序:列表.sort
本题需要对字符串进行排序,需要用到stored
例如:
sorted('abdhk')>>>['a', 'b', 'd', 'h', 'k']
但是如有大写字母或者其他字符,则会被写在前面,与题目不符,
例如:
sorted('adaggf0')>>>['0', 'a', 'a', 'd', 'f', 'g', 'g']
sorted('ASMfgdac')>>>['A', 'M', 'S', 'a', 'c', 'd', 'f', 'g'],加入key=str.upper就可以解决大写排在前面问题,但特殊字符还需要另外处理。
如:sorted('ASMfgda@c',key=str.upper)>>>['@', 'A', 'a', 'c', 'd', 'f', 'g', 'M', 'S']
可以用isalpha来处理
'''
s = input()
a = '' # 准备空的字符串a,用来存放s中的所有字母。
# 找出s中的每一个字母
for i in s:
    if i.isalpha():
        a+=i
a = sorted(a,key=str.upper) # 利用sorted排序的话需要重新给a赋值
t = ''# 准备一个新的字符串,初始值为空,存放答案,先把所有的值存在t中,最后统一输出
index = 0 # 准备工作完成,非英文字母要按照原来的顺序输出,因此需要找到s中的每一个顺序,需要用到range循环
for i in range(len(s)): # i表示字符串中每个字符的编号;s[i]:字符串的名称+字符编号就可以表示字符串中的每个字符
    if s[i].isalpha(): # 判断字符是不是字母,如果是就按照设定的规则输出,如果不是就原样输出。
        t+=a[index] # 利用字符串的名称+[]找到字符串中的某个值,
        index+=1 # 表示下一个字母
    else:
        t+=s[i] # 在t中加入原位置上的字符,i就是原位置
print(t)

全部评论

相关推荐

ddd7_:跟我一模一样,加微信的hr都同一个,扫码了白年书人查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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