题解 | #字符串排序#

字符串排序

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


# 1.排序方式:全部转换成小写字母进行排序 
# 2.用for i in str1: i.isupper()  +upindex[] 记录大写字母转化的位置,排序后再转换回去。
# 3.记录下 not i.isalpha() 的字符和位置index 后续 insert。采用栈pop()的特性一个一个insert

while True:
    try:
        str1=input()
        not_alpha=[]
        not_alpha_index=[]
        alpha_stack=[]
        for i in range(len(str1)):  #不能 in str1 否则用str1.index来记录索引的话,会照成相等元素的索引值
                                    #记录第一个出现的索引。所以为了要记录索引的话,遍历必须用range(len)
            if not str1[i].isalpha():
                not_alpha.append(str1[i])
                not_alpha_index.append(i)
            elif str1[i].isalpha():
                alpha_stack.append(str1[i])
        result=sorted(alpha_stack,key=lambda x:x.lower()) #key 按照某种规则对原序列元素进行排序但是不改变元素本身。
        for i in range(len(not_alpha_index)):
            result.insert(not_alpha_index[i],not_alpha[i])
        print("".join(result))
        
    except:
        break
全部评论

相关推荐

09-02 14:53
... 前端工程师
双尔:露头就秒,骗你的,不露也秒
点赞 评论 收藏
分享
沐芷凌曦:这简历数分别指望了,数分最基本的SQL能力你的经历是完全没办法佐证的,而且简历排版极其混乱。你的奖项为什么要写具体的项目内容;教育经历为什么要写你在什么课学到了什么东西,这些都应该是在专业技能里的;专业技能里你又把项目的内容放了进来,而且专业技能你又在强调ETL,如果说你确定要把ETL作为你专业技能的主体那你的经历为什么不能重点佐证呢;反而项目经历你项目等于你调用PyEcharts做了一个看板,就是最基本的课程设计,也是没办法佐证你对PyEcharts的掌握程度,而且没有说具体用什么技术做了什么东西中间做了什么最终得到了什么结果。
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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