题解 | #字符串排序#

字符串排序

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

import sys
# 在这个问题中,非alpha字符相当于一个隔断
#那么首先挑选出非alpha字符部分,然后进行排序,值得注意的是
#需要处理大小写,那么在重组时要考虑,原字母的初始索引进行同字母的排序
#再重组过程中索引和非alpha字符一样时,直接输入字符,然后再下一步
#感觉用动态规划会好一些,找到最长顺序和逆序序列,然后总序列长-(顺+逆)就是要剔除的
def HJ26_sort(s):
    # 获取所有的字母和它们的索引
    letters_with_indices = [(char, idx) for idx, char in enumerate(s) if char.isalpha()]

    # 分离字母和非字母字符
    non_letters = [char for char in s if not char.isalpha()]
    
    # 按规则对字母进行排序
    sorted_letters = sorted(letters_with_indices, key=lambda x: (x[0].lower(), x[1]))

    # 重新组合字符串并保持非字母字符位置不变
    result = ''
    pointer = 0
    for char in s:
        if char.isalpha():
            result += sorted_letters[pointer][0]
            pointer += 1
        else:
            result += char

    return result

string = input()
print(HJ26_sort(string))

全部评论

相关推荐

03-25 16:22
南华大学 Java
不敢追175女神:你是打了上千个招呼吧?😂
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务