Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
题目的意思就是给定一个32位的unsigned interger,返回一个逆置的32bits的数,解法思路当然是采用位运算,给定数不断右移,返回数不断左移,当给定数的末位为一时,就将返回数的末位置为1,这样一趟遍历下来就能得到正确的结果。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t answer;
uint32_t i;//判断uint32_t的位数,不断左移直到为0;
for(i=1;i!=0;i<<=1){
answer<<=1;
if(n&1)answer|=1;
n>>=1;
}
}
return answer;
};
Submission Details
600 / 600 test cases passed.
Status: Accepted
Runtime: 9 ms
Submitted: 1 day, 7 hours ago
可以看到位运算的效率很高。