【一天一道Leetcode】颠倒二进制位
本篇推文共计2000个字,阅读时间约3分钟。
01
题目描述
题目描述:
颠倒给定的 32 位无符号整数的二进制位。
示例 1:
输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释:
输入的二进制串 00000010100101000001111010011100
表示无符号整数 43261596,
因此返回 964176192,
其二进制表示形式为 00111001011110000010100101000000。
提示:
输入是一个长度为32的二进制字符串。
02
思路和方法
由题意可知:
我们可以将输入num视为一个长为32的二进制串,从高往低枚举num的每一位,通过取余的形式判断该位数是否数值为1。
同时新建一个新的二进制串rev,如果num所在位数取余后结果为1,将1赋给rev。
这样进行一轮操作后,将rev的二进制左移1位,num二进制右移一位,继续判断下一个数。
直到最后完全输出rev的结果,
即为颠倒二进制后的结果。
![](https://filescdn.proginn.com/df1ef9460b67237283bb1478e861019f/32b4dd0344cbfe35c94790e7fbb81da4.webp)
我们的代码输出为:
class Solution:
def reverseBits(self, n: int) -> int:
rev=0
i=0
for i in range(32):
rev<<=1
if n%2==1:
rev+=1
n>>=1
i+=1
return rev
![](https://filescdn.proginn.com/04354ce4015b8cce11eaf64ef4dff5b5/cf32b641e2da710d88a1a024731af992.webp)
【年终总结】你好2021,再见2020。
![](https://filescdn.proginn.com/0b2a2866afcfb317a23708cdbea2a518/b1c00c47db6b47733dc1b4f0d680ac9f.webp)
【玩转Python】DIY贪吃蛇游戏复盘
![](https://filescdn.proginn.com/0d33b4bba0401b0fd81297de4abdd475/cf7bfd33000d49da021b9bd53f1d469a.webp)
【一天一道Leetcode】丑数
你与世界
只差一个
公众号
评论