题解 | #字符串排序#

字符串排序

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

while True:
    try:
        #思路:
        #将字母单独提出来,然后排序
        #遍历原字符串,遇到字母就替换,非字母就跳过
        
        inputstring = input()
        inputlist = list(inputstring)
        #list比较好操作,用列表推导式
        alphalist = [char for char in inputlist if char.isalpha()]
        newlist = sorted(alphalist, key=str.upper)
        finallist=[]
        i=0 #i用于记录已经使用掉的字母
        for index, value in enumerate(inputlist):
            if value.isalpha():
                finallist.append(newlist[i])
                i+=1
            else:
                finallist.append(value)
        for char in finallist:
            print(char,end='')

    except:
        break













'''
#参考:https://blog.nowcoder.net/n/adb4ea7bccca437f9c25f329a3b4f2d5?f=comment
while True:
    try:
        # 获取用户输入的字符串
        inputstring = input()
        
        # 从输入字符串中提取字母,构建新字符串 'newstring'
        newstring = ''.join(i for i in inputstring if i.isalpha())
        
        # 将 'newstring' 中的字母按不区分大小写的方式排序,得到 'sortedstring'
        sortedstring = sorted(newstring, key=str.upper)
        
        # 用于遍历 'sortedstring' 的索引
        index = 0
        
        # 构建最终的字符串 'finalstring'
        finalstring = ''
        for i in range(len(inputstring)):
            if inputstring[i].isalpha():
                # 如果字符是字母,用 'sortedstring' 中对应索引的字母替换
                finalstring += sortedstring[index]
                index += 1
            else:
                # 如果字符不是字母,保持原样
                finalstring += inputstring[i]
        
        # 打印最终的字符串 'finalstring'
        print(finalstring)
    except:
        # 当用户输入结束或发生异常时,退出循环
        break
'''

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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