Leetcode 190. Reverse Bits

题目描述:完成对一个无符号32位数二进制进行翻转。

题目链接:190. Reverse Bits

思路:就像189一样进行字符串的翻转,然后转换成十进制数返回,但是会省略0.
最好的就是像网上一样进行位操作。
这道题又是在考察位操作Bit Operation,LeetCode中有关位操作的题也有不少,比如 Repeated DNA Sequences,Single Number, Single Number II ,和 Grey Code 等等。跟上面那些题比起来,这道题简直不能再简单了。那么对于这道题,我们只需要把要翻转的数从右向左一位位的取出来,如果取出来的是1,我们将结果res左移一位并且加上1;如果取出来的是0,我们将结果res左移一位,然后将n右移一位即可,代码如下。

代码如下


class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        res = 0
        for i in range(32):
            res = res << 1
            if ((n&1)==1):
                res += 1
            n >>= 1
        return res

参考链接

我们只需要把要翻转的数从右向左一位位的取出来,如果取出来的是1,我们将结果res左移一位并且加上1;如果取出来的是0,我们将结果res左移一位…Leetcode 190. Reverse Bits