华为OD机试真题 新系统 - 8位LED控制器 (JavaPyCC++JsGo)

1 阅读3分钟

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):点亮第 xx 个LED。将第 xx 位设为 1。使用位或运算:status |= (1 << x)
    • D (Dark):熄灭第 xx 个LED。将第 xx 位设为 0。使用位与非运算:status &= ~(1 << x)
    • T (Toggle):切换第 xx 个LED的状态。0变1,1变0。使用位异或运算:status ^= (1 << x)
  • 结果输出:执行完所有指令后,直接输出该整数的十进制表示即可。

复杂度分析

  • 时间复杂度O(N)O(N),其中 NN 是输入字符串的长度。我们需要遍历一遍字符串来解析并执行指令。
  • 空间复杂度O(1)O(1),只需要一个整数变量来存储LED的状态。