当前位置: 首页 > news >正文

华为OD机试 - 智能广播合并台号 - 数组(Java 新系统 100分)

华为OD机试 新系统 题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

• 若连续的线路编号个数 ≥ 3 个,则合并为一个区间,格式为 起始-结束(如 B-F 表示 B、C、D、E、F 五条线路)

• 若连续线路编号个数 = 2 个,不合并,仍各自单独列出(如 AB 两个编号写成 A,B)

• 若连续线路编号个数 = 1 个,单独列出(如 G)

• 不连续的线路之间各自处理,互不影响

二、输入描述

参数 1:整数 n,表示需要广播的线路条数

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

三、输出描述

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

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

四、测试用例

测试用例1:

1、输入

6
G B A F D C

2、输出

A-D,F,G

测试用例2:

1、输入

3
A C B

2、输出

A-C

五、解题思路

六、Java算法源码

publicclassOdTest{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=scanner.nextInt();/* * 由于线路编号只可能是 A-Z,共 26 个, * 使用布尔数组即可同时完成: * * 1. 去重 * 2. 记录某个线路是否出现 * * exist[0] 表示 A 是否出现 * exist[1] 表示 B 是否出现 * ... * exist[25] 表示 Z 是否出现 */boolean[]exist=newboolean[26];for(inti=0;i<n;i++){charch=scanner.next().charAt(0);/* * 例如: * A - A = 0 * B - A = 1 * D - A = 3 * * 如果存在重复字母,只会重复把同一个位置设置成 true, * 因此自然完成去重。 */exist[ch-'A']=true;}// 保存最终的每一个输出项,例如 A-D、F、G。List<String>result=newArrayList<>();inti=0;while(i<26){/* * 当前字母没有出现,则直接跳过, * 继续寻找下一段连续线路的起点。 */if(!exist[i]){i++;continue;}// 当前位置就是一段连续区间的起点。intstart=i;/* * 不断检查后一个字母是否存在, * 找出当前连续线路区间的终点。 * * 例如: * A B C D 都存在 * * start = A * end = D */while(i+1<26&&exist[i+1]){i++;}intend=i;// 当前连续区间包含的字母个数。intlen=end-start+1;if(len>=3){/* * 连续线路不少于 3 个时进行压缩。 * * 例如: * A B C D * * 输出: * A-D */result.add(""+(char)('A'+start)+"-"+(char)('A'+end));}else{/* * 连续线路只有 1 个或者 2 个时, * 根据题目要求不能使用区间形式, * 必须逐个输出。 * * 例如: * A B * * 输出: * A,B */for(intj=start;j<=end;j++){result.add(String.valueOf((char)('A'+j)));}}/* * 当前连续区间已经全部处理完成。 * i 当前位于区间终点, * 移动到下一个位置继续扫描。 */i++;}// 使用逗号连接所有结果项,不会产生多余逗号。System.out.println(String.join(",",result));scanner.close();}}

七、效果展示

1、输入

7
A B D E F H H

2、输出

A,B,D-F,H

3、说明


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 新系统 200分)

🏆本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

http://www.jsqmd.com/news/1392105/

相关文章:

  • 2026外贸CRM软件推荐:AI赋能商机挖掘,业客一体化选型指南 - 优质品牌中立测评推荐
  • 让 Java 直连 Windows 共享:jcifs-ng 从零到一实战指南
  • 樊嘉院士Science|时空多组学
  • 从奇点大会看技术会议的价值,普通开发者怎么选会省钱
  • 第三十三届北京国际广播电影电视展览会(BIRTV2026)即将启幕,劲捷KINGJOY将携六类重磅产品强势亮相 - 甄选测评馆
  • 10 分钟搭建 Windows 专属文件同步:SyncTrayzor 新手完整指南
  • 燕郊医疗网站建设如何打造既专业又具患者温度的线上服务平台
  • 051、ISP Pipeline的“数据流断点“——RAW域到RGB域转换时位宽截断导致的banding伪影排查与修复
  • Windows系统文件spwmp.dll丢失找不到问题解决
  • WinUtil快速上手指南:一条命令装软件、清臃肿、管更新,重装Windows不再折腾
  • 血浆p-tau217能否揭示阿尔茨海默病的临床前时间密码?
  • C盘爆满别急着重装!Dism++ 清理神器 3 步免费释放 10GB 空间的完整指南
  • 智能运维控制器参考设计:面向视频监控系统的运维管理硬件方案
  • 让 Agent RAG 真正好用,检索质量是关键,多路召回 + 重排序
  • 图像传感器基础知识介绍
  • 华硕笔记本性能控制实测:GHelper 怎么用?轻量开源替代官方控制台
  • 成都宠物医疗助理培训班 零基础学宠物 B 超 X 光实训 怎么报名去哪里学 - 湖北找学校
  • 当AI遭遇算力、能源和落地困境:类脑智能或成为具身智能破局关键
  • 26/8/13下班学习小结
  • 用Python让AWR1843毫米波雷达数据在屏幕上实时跳动,比想象中简单
  • 告别上万行代码的眼花缭乱:notepad-- 代码折叠功能实用手册
  • 智能压枪从入门到实战:PUBG-Logitech鼠标宏自动识别压枪完整调校手册
  • 新电脑装软件装到崩溃?WinUtil 让你半小时搞定安装、优化与修复
  • LDD3--字符设备驱动
  • 魔兽争霸3地图编辑器卡顿救星:HiveWE完整上手指南,大图创作告别等待
  • 如何判断一家 GEO 服务商是否靠谱?
  • N1搭建Hexo个人博客,部署博客到Github
  • 长春网站建设加q479185700:中小企业突围的数字破局之道与实战避坑指南
  • 【VI Generator × GPT:让AI 更加快速准确的生成 LabVIEW 工程】
  • Demucs量化模型实战:mdx_q与mdx_extra_q的INT8部署避坑指南