v1:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
uint32_t r = 1;
for (int i =0; i< 32; i++) {
uint32_t temp = n & r;
if (i < 16) res |= (temp << (31 - 2*i));
else res |= (temp >> (2*i - 31));
r = r << 1;
}
return res;
}
};
v2:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
uint32_t r = 1;
for (int i =0; i< 32; i++) {
uint32_t temp = n & r;
if (temp) {
res |= (temp << (31 - i));
}
if (!(n = n >> 1)) break;
}
return res;
}
};v3:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
for (int i = 0; i < 4; i++) {
uint32_t t8 = (n >> (i * 8)) & 0xFF;
uint32_t rt8 = 0;
for (int j = 0; j < 4; j++) {
uint32_t t2 = 0, t1 = 0;
t2 = (t8 >> (j * 2) & 0x3);
t1 |= (t2 & 0x1) << 1;
t2 = (t2 >> 1) | t1;
rt8 |= (t2 << (2 * (3 - j)));
}
res |= (rt8 << (8 * (3 - i)));
}
return res;
}
};
858

被折叠的 条评论
为什么被折叠?



