)
一、问题描述二、解题思路# 1.拆分版本字符串 # 每行用空格分割 # 第一部分是主版本字符串如1.0.2按.切分转整数列表用于比较 # 如果有第二部分说明是测试版提取 beta 后面的数字没有则是正式版。 # 2.自定义排序 key核心 # key 是一个元组排序时会从左到右依次对比 # (主版本整数列表, 是否正式版标记, beta数字) # 是否正式版测试版填1正式版填2 → 主版本相同时测试版排在前面 # 测试版存 beta 后的数字正式版随便填大数不会用到。 # 3.用sorted配合自定义 key 排序最后逐行输出原字符串。 n int(input()) versions [] for _ in range(n): s input().strip() # 例:s 1.0.2 beta3 # s.split() → 用空格切开得到 # parts [1.0.2, beta3] # parts [0] 1.0.2 → 主版本号 # parts [1] beta3 → beta 测试标记 parts s.split() main_str parts[0] # 处理主版本转整数列表 main list(map(int,main_str.split(.))) if len(parts) 2: # 测试版 betaX beta_num int(parts[1][4:]) # key: (主版本列表, 1测试版, beta数字) key (main,1,beta_num) else: # 正式版 key (main,2,9999) versions.append((key, s)) # 按key升序排序 versions.sort() # 输出原字符串 for item in versions: print(item[1])