0190-reverse-bits

Try it on leetcode

Description

Reverse bits of a given 32 bits signed integer.

 

Example 1:

Input: n = 43261596

Output: 964176192

Explanation:

Integer Binary
43261596 00000010100101000001111010011100
964176192 00111001011110000010100101000000

Example 2:

Input: n = 2147483644

Output: 1073741822

Explanation:

Integer Binary
2147483644 01111111111111111111111111111100
1073741822 00111111111111111111111111111110

 

Constraints:

  • 0 <= n <= 231 - 2
  • n is even.

 

Follow up: If this function is called many times, how would you optimize it?

Solution(Python)

class Solution:
    def reverseBits(self, n: int) -> int:
        # 10110010
        # 01001101
        # bruteforce
        #  bits = format(n, '032b')
        # bits = bits[::-1]
        # return int(bits, 2)
        return self.optimised(n)

    # O(32)
    def bruteforce(self, n: int) -> int:
        bits = format(n, '032b')
        bits = bits[::-1]
        return int(bits, 2)

    # Get last bit n& 1
    # answer = 0

    # Take last bit
    # Shift answer left
    # Append bit
    def optimised(self, n: int) -> int:
        ans = 0
        for _  in range(32):
            ans <<= 1
            ans |= n&1
            n >>=1
        return ans


        

Dry Run