Q190 Reverse Bits

时间:2022-05-11
本文章向大家介绍Q190 Reverse Bits,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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 为例:
  1. 先用 bin(n) 将 n 转化为二进制数(str):'0b10100101000001111010011100';
  2. 再用 [:1:-1] 将str反转,注意去除 '0b' 两个字符: '00111001011110000010100101';
  3. 再用左对齐函数 ljust(32, '0'),在后面补 '0',达到 32位的要求:'00111001011110000010100101000000';
  4. 最后使用 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