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 - 2nis 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