目录
题目
思路
Code
题目
有一个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
思路
简单题,有手就行。
- 用一个8位状态(数组或位运算)模拟8个LED灯,初始全0
- 每两个字符为一条指令:首字符为操作类型(L/D/T),第二个字符为灯编号(0-7)
- L → 置1,D → 置0,T → 取反
- 最终将8位二进制转为整数输出。注意编号0对应最低位(即 bit0)
Code
defsolve(): s =input().strip() state =0# 每两个字符为一条指令i =0whilei +1<len(s): op = s[i] x =int(s[i +1])ifop =='L': state |= (1<< x)elifop =='D': state &= ~(1<< x)elifop =='T': state ^= (1<< x) i +=2print(state) solve()JS
consts =require('fs').readFileSync('/dev/stdin','utf8').trim();letstate =0;// 每两个字符为一条指令for(leti =0; i +1< s.length; i +=2) {constop = s[i];constx =parseInt(s[i +1]);if(op ==='L') state |= (1<< x);elseif(op ==='D') state &= ~(1<< x);elseif(op ==='T') state ^= (1<< x); }console.log(state);【华为od机试真题Python+JS+Java+Go合集】【超值优惠】:Py/JS/Java/Go合集
【华为od机试真题Python】:Python真题题库
【华为od机试真题JavaScript】:JavaScript真题题库
【华为od机试真题Java&Go】:Java&Go真题题库
【华为od机试真题C++】:C++真题题库
【华为od机试真题C语言】:C语言真题题库
【华为od面试手撕代码题库】:面试手撕代码题库
【华为od机试面试交流群:830285880】【文章底部有二维码链接,可扫码加交流群】
华为OD机试:二本院校有机会吗?
有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。