问题描述:
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
思路:
1、将整数转变为二进制;
2、反转,相同的不用反转;
3、将翻转后的二进制变为整数返回。
代码:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int array[32] = {0};
int i = 0;
while(n)
{
array[i++] = n % 2;
n /= 2;
}
for(int i = 0,j = 31;i < 16;++i,--j)
{
if(array[i] != array[j])
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
uint32_t key = 0;
for(int i = 31; i >= 0; --i)
{
key = key * 2 + array[i];
}
return key;
}
};