美文网首页
Q190 Reverse Bits

Q190 Reverse Bits

作者: 牛奶芝麻 | 来源:发表于2018-02-28 16:34 被阅读5次

    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
    

    相关文章

      网友评论

          本文标题:Q190 Reverse Bits

          本文链接:https://www.haomeiwen.com/subject/znygtftx.html