Leetcode 190. Reverse Bits

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Description

Reverse Bits

2. Solution

  • Version 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int a[32] = {0};
unsigned int result = 0;
for(int i = 0; i < 32; i++) {
a[i] = n & 1;
n >>= 1;
}
unsigned int m = 1;
for(int i = 31; i >= 0; i--) {
result += a[i] * m;
m <<= 1;
}
return result;
}
};
  • Version 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t x = 2147483648;
uint32_t result = 0;
while(n) {
int temp = n & 1;
result += temp * x;
n >>= 1;
x >>= 1;
}
return result;
}
};
  • Version 3
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
for(int i = 0; i < 32; i++) {
result <<= 1;
result |= (n & 1);
n >>= 1;
}
return result;
}
};
  • Version 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
for(int i = 0; i < 32; i++) {
result <<= 1;
if(n & 1) {
result++;
}
n >>= 1;
}
return result;
}
};

Reference

  1. https://leetcode.com/problems/reverse-bits/description/
如果有收获,可以请我喝杯咖啡!