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左移一位…