8位LED控制器
2026 华为OD机试真题 4月19日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
有一个8位LED控制器,包含8个 LED灯 (编号0-7),初始状态全灭,用8位二进制表示为:00000000。控制器可以接收以下三种指令:
- Lx:L表示点亮操作,x表示LED的编号(0一7),操作得到的结果是:点亮第x个LED灯,把状态设为1。
- Dx:D表示熄灭操作,x表示LED的编号(0-7),操作得到的结果是:熄灭第x个LED灯,把状态设为0。
- Tx:T表示切换操作,x表示LED的编号(0-7),操作得到的结果是:切换第x个LED灯的状态,若状态为0则变为1,为1则变为0。
现在给定一组指令字符串(0<=长度<=1000),按照顺序解析并执行所有的指令,并返回最终8位二进制对应的整数值。 例如:“L0L1L2T1“操作表示:点亮LED0,点亮LED1,点亮LED2,切换LED1,最终二进制00000101,应整数5。
输入描述
给定一组指令字符串(0<=长度<=1000)
输出描述
返回最终8位二进制对应的整数值
示例1
输入
L0L1L2T1
输出
5
说明
1.初始:00000000
2.L0(点亮 LED0),二进制值00000001(点亮第 0 位)
3.L1(点亮 LED1),二进制值00000011(点亮第 1 位)
4.L2(点亮 LED2),二进制值00000111(点亮第 2 位)
5.D1(熄灭 LED1),二进制值00000101(熄灭第 1 位)
6.最终二进制00000101,返回对应整数5
示例2
输入
L0L1L2L3L4L5L6L7
输出
255
说明
点亮所有LED灯,最终二进制1111,返回对应整数255
解题思路
核心思想
本题要求模拟一个8位LED控制器的操作。8位LED可以用一个整数来表示,初始值为0(二进制 00000000)。
- 指令解析:指令由两个字符组成,第一个字符是操作类型(L, D, T),第二个字符是LED编号(0-7)。
- 位运算操作:
- L (Light):点亮第 个LED。将第 位设为 1。使用位或运算:
status |= (1 << x)。 - D (Dark):熄灭第 个LED。将第 位设为 0。使用位与非运算:
status &= ~(1 << x)。 - T (Toggle):切换第 个LED的状态。0变1,1变0。使用位异或运算:
status ^= (1 << x)。
- L (Light):点亮第 个LED。将第 位设为 1。使用位或运算:
- 结果输出:执行完所有指令后,直接输出该整数的十进制表示即可。
复杂度分析
- 时间复杂度:,其中 是输入字符串的长度。我们需要遍历一遍字符串来解析并执行指令。
- 空间复杂度:,只需要一个整数变量来存储LED的状态。