列表

详情


190. 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。

提示:

 

示例 1:

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000

示例 2:

输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
     因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。

 

提示:

 

进阶: 如果多次调用这个函数,你将如何优化你的算法?

相似题目

整数反转

位1的个数

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: uint32_t reverseBits(uint32_t n) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.6 MB, 提交时间: 2021-07-26 14:10:12

func reverseBits(n uint32) (rev uint32) {
    for i := 0; i < 32 && n > 0; i++ {
        rev |= n & 1 << (31 - i)
        n >>= 1
    }
    return
}

python 解法, 执行用时: 40 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:23:43

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        b = bin(n)
        c = [i for i in str(b)[2:]]
        c.reverse()
        d = ''.join(c) + 32 * '0'
        d = '0b' + d[0:32]
        return int(d, 2)

javascript 解法, 执行用时: 128 ms, 内存消耗: N/A, 提交时间: 2018-08-25 12:12:36

/**
 * @param {number} n - a positive integer
 * @return {number} - a positive integer
 */
var reverseBits = function(n) {
    var b = n.toString(2);
    if ( b.length < 32 ) {
        b = new Array(33-b.length).join('0') + b;
    }
    /*
    b = new Array(33).join('0') + b;
    b = b.slice(-32);
     */
    r_b = b.split('').reverse().join(''); 
    return parseInt(r_b, 2);
};

上一题