题解 | #字符串排序#
字符串排序
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