#417. 文本重排:仅排序单词

文本重排:仅排序单词

文本重排:仅排序单词

故事背景

编辑在排版一段混合文本(单词与数字)时,希望只对其中的英文单词做字典序排序,而所有数字保持原有位置不动,以尽量减少人工校对成本。

题目描述

给定一行由 n 个“记号”构成的序列,每个记号要么是仅含小写字母的单词,要么是仅含数字的非负整数。请将所有“单词记号”按字典序从小到大排序后,依次覆盖回这些单词原先出现的位置;所有“数字记号”的内容与位置保持不变。输出重排后的序列。

输入格式

  • 第一行一个整数 n。
  • 第二行包含 n 个记号(token),相邻用一个空格分隔。每个记号要么是 [a-z]+,要么是 [0-9]+

输出格式

  • 输出一行,包含重排后的 n 个记号,空格分隔。

输入输出样例 #1

输入 #1

7
orange 12 apple 5 banana 7 kiwi

输出 #1

apple 12 banana 5 kiwi 7 orange

样例解释 #1

单词为 {orange, apple, banana, kiwi},排序后为 {apple, banana, kiwi, orange},覆盖回单词出现的位置;数字 12、5、7 保持不动。

说明/提示

  • 1 ≤ n ≤ 10^4;单词长度 1–20;整数不含前导零(数字 0 除外)。
  • 实现要点:收集所有单词到数组并排序;再遍历原序列,遇到单词弹出下一个有序单词,遇到数字直接输出原数字。