1.题目详情
颠倒给定的 32 位无符号整数的二进制位。
2.解题思路
python中如何实现颠倒?
如何将十进制转为二进制?
3.代码实现
python已经默认讲输入的数转为十进制了,因此直接用bin转为二进制时会去掉前面无效的0,就不足32位了。因此用zfill函数,右对齐,前边的空位以0填充,再用[::-1}颠倒,求十进制
class Solution:
def reverseBits(self, n: int) -> int:
return int(bin(n)[2::].zfill(32)[::-1], base=2)
4.知识点
- zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
- bin() 函数返回指定整数的二进制版本,结果将始终以前缀 0b 开头。因此加上[2:]可去掉前边的0b
- int(str,2) 将2进制转为10进制
分着写
class Solution:
def reverseBits(self, n):
str1 = bin(n) #转换为二进制字符串
str2 = str1[2:].zfill(32) #去掉前'0b'后填充为32位
str3 = str2[::-1] #字符串反转
return int(str3,2) #转为10进制