题解 | #字符串排序#

字符串排序

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

import re

# 计算每个字符的字母表排序、每个字符的原始顺序
arr = str(input())
# arr.split()

xrr = []
nrr = {}
for i in range(len(arr)):
    if re.search(r'[a-z]+', arr[i]):
        xrr.append([
            i,                      # 0. 原始顺序
            ord(arr[i]) - ord('a'), # 1. 字母顺序
            arr[i],                 # 2. 主要内容
        ])
    elif re.search(r'[A-Z]+', arr[i]):
        xrr.append([
            i,
            ord(arr[i]) - ord('A'),
            arr[i],
        ])
    else:
        # 其他字符保持原有位置
        nrr[i] = arr[i]

# def sorted_key(x):
#     return x[1], x[0]

xrr = sorted(xrr,key=lambda x:(x[1], x[0]) )
# print(xrr)

idx = 0
for i in range(len(arr)):
    if i in nrr:
        print(nrr[i], end='')
        idx+=1
        continue
    else:
        print(xrr[i-idx][2], end='')
        

# while idx < len(arr):
#     print(nrr[idx], end='')
#     idx+=1















全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务