Reverse bits of a given 32 bits unsigned integer.
For example:
given input 43261596 (represented in binary as 00000010100101000001111010011100),
return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
解题思路:
参考题目: Q7 Reverse Integer
此题是将整数对应的32位二进制数反转,然后再将反转后的二进制数转化为整数。
- 以 n = 43261596 为例:
- 先用 bin(n) 将 n 转化为二进制数(str):'0b10100101000001111010011100';
- 再用 [:1:-1] 将str反转,注意去除 '0b' 两个字符: '00111001011110000010100101';
- 再用左对齐函数 ljust(32, '0'),在后面补 '0',达到 32位的要求:'00111001011110000010100101000000';
- 最后使用 int(str, base=2) 函数将指定进制的数转化为十进制数:964176192(也可以使用 eval('0b' + str)将二进制数转化为十进制数)。
Python实现:
class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
return int(bin(n)[:1:-1].ljust(32, '0'), base=2)
# 或者 return eval('0b' + bin(n)[:1:-1].ljust(32, '0'))
a = 43261596
b = Solution()
print(b.reverseBits(a)) # 964176192
网友评论