**智能广播合并台号**
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 及以上时压缩成 起始-结束,否则逐个输出。
算法步骤
- 读取
n和第二行的字母列表。 - 用集合去重,再排序。
- 从左到右扫描排序后的字母数组,找到每一段连续区间。
- 若区间长度大于等于 3,输出
首字母-尾字母;否则逐个字母输出。 - 各片段用逗号连接。
复杂度分析
设去重后字母个数为 m,则 m <= 26。
- 时间复杂度:
O(n log n),主要来自排序。 - 空间复杂度:
O(n),用于存储去重后