52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
---
|
|
layout: page
|
|
title: Reverse Bits
|
|
last_solved: Solved
|
|
category: Bits
|
|
leetcode_url: https://leetcode.com/problems/reverse-bits
|
|
status: Solved
|
|
---
|
|
|
|
Problem
|
|
-------
|
|
|
|
```
|
|
Reverse bits of a given 32 bits unsigned integer.
|
|
|
|
|
|
|
|
Example 1:
|
|
|
|
Input: 00000010100101000001111010011100
|
|
Output: 00111001011110000010100101000000
|
|
Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.
|
|
Example 2:
|
|
|
|
Input: 11111111111111111111111111111101
|
|
Output: 10111111111111111111111111111111
|
|
Explanation: The input binary string 11111111111111111111111111111101 represents the unsigned integer 4294967293, so return 3221225471 which its binary representation is 10111111111111111111111111111111.
|
|
|
|
```
|
|
|
|
Solution
|
|
----------
|
|
|
|
Try doing it by hand for a small test case like a number with 4 bits (see image).
|
|
|
|
{% highlight python %}
|
|
|
|
def reverseBits(self, n: int) -> int:
|
|
|
|
output, power = 0, 31
|
|
|
|
while n:
|
|
output += (n&1) << power
|
|
n>>=1
|
|
power-=1
|
|
|
|
return output
|
|
|
|
{% endhighlight %}
|
|
|
|
|
|
 |