**智能广播合并台号**

2026 华为OD机试真题 8月5日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

某社区有多条广播线路,每条线路用一个大写英文字母编号表示 (A-Z)。当发送广播时,为减少操作次数,会将连续相邻编号且满足一定个数的线路合并为一个区间,用“起始编号-结束编号”的简写形式表示;不连续或不满足个数的线路则单独列出。合并后的结果要求按字母升序排列,各项之间用一个逗号分隔。

具体合并规则如下:

  • 若连续的线路编号个数 ≥3 个,则合并为一个区间,格式为 起始-结束(如 B-F 表示 B、C、D、E、F 五条线路)
  • 若连续线路编号个数 =2 个,不合并,仍各自单独列出(如 AB 两个编号写成 A,B)
  • 若连续线路编号个数 =1 个,单独列出(如 G)
  • 不连续的线路之间各自处理,互不影响

2026 华为OD机试真题 8月5日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

第一行输入整数 n,表示需要广播的线路条数。

第二行输入 n 个大写字母,空格分隔,表示发送广播的线路编号。字母可能重复,但合并时每个编号只计一次。

输出描述

输出一个字符串,表示合并后的广播线路列表,按字母升序排列,项间用逗号分隔。

约束:1≤n≤26,字母范围为 A-Z(仅大写)。输入字母可能有重复,需去重后排序再合并。

示例1

输入

6
G B A F D C

输出

A-D,F,G

说明

字母去重排序后为 A B C D F G。其中 A-D 连续 4 个(≥3),合并为 A-D;F 和 G 相邻但仅 2 个,不合并,写成 F,G。最终结果 A-D,F,G。

示例2

输入

3
A C B

输出

A-C

说明

字母排序后为 ABC,三字母连续,个数=3(≥3),合并为 A-C。

示例3

输入

4
A A B B

输出

A,B

说明

去重后仅剩 AB,虽然相邻但只有 2 个字母,不满足 ≥3 的合并条件,因此各自单独列出。

解题思路

核心思想

先去重并排序,再按字母顺序扫描。只要当前一段是连续字母,就向后扩展;段长达到 3 及以上时压缩成 起始-结束,否则逐个输出。

算法步骤

  1. 读取 n 和第二行的字母列表。
  2. 用集合去重,再排序。
  3. 从左到右扫描排序后的字母数组,找到每一段连续区间。
  4. 若区间长度大于等于 3,输出 首字母-尾字母;否则逐个字母输出。
  5. 各片段用逗号连接。

复杂度分析

设去重后字母个数为 m,则 m <= 26

  • 时间复杂度:O(n log n),主要来自排序。
  • 空间复杂度:O(n),用于存储去重后
THE END