题解 | #H27 字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
方法1
while True: try: s = input() # 提取纯字母字符 a = "" for i in s: # 如果字符是字母,则添加到字符串a中 if i.isalpha(): a += i # 对每个字母应用str.upper方法,并根据返回的大写值来排序,返回排序后的字母列表。 # 由于str.upper会返回一个新的字符串,不会修改原始字符串,这样就能保留原始字符串的大小写格式。 b = sorted(a, key=str.upper) # 初始化排序后的结果字符串 d = "" # 初始化索引,用于跟踪列表b中的位置 index = 0 # 遍历原始字符串s for i in range(len(s)): # 如果当前位置的字符是字母 if s[i].isalpha(): # 将排序后的字母添加到结果字符串d d += b[index] # 移动到排序后列表的下一个字母 index += 1 else: # 如果不是字母,则直接添加到结果字符串d d += s[i] print(d) except: break
方法2
while True: try: s = input() # 创建一个列表,用于存储最终排序后的字符 sorted_chars = sorted([c for c in s if c.isalpha()], key=lambda x: x.lower()) # 将其他字符按照原位置插入到排序后的列表中 for i, c in enumerate(s): if not c.isalpha(): sorted_chars.insert(i, c) print("".join(sorted_chars)) except: break
【牛客站内】华为机试题解 文章被收录于专栏
【牛客站内】 分享个人刷题的思路和解法