1. 程式人生 > >LeetCode刷題之190Python顛倒二進位制位

LeetCode刷題之190Python顛倒二進位制位

題目:

顛倒給定的 32 位無符號整數的二進位制位。

示例:

輸入: 43261596
輸出: 964176192
解釋: 43261596 的二進位制表示形式為 00000010100101000001111010011100 ,
     返回 964176192,其二進位制表示形式為 00111001011110000010100101000000 。

進階:
如果多次呼叫這個函式,你將如何優化你的演算法?

參考解答:

   https://blog.csdn.net/qq_34364995/article/details/80544458

使用python的format格式化。’{0:032b}’.format(n)將n轉化為32位無符號數。 

class Solution:
    # @param n, an integer
    # @return an integer

    def reverseBits(self, n):
        b = list('{:032b}'.format(n))
        for i in range(16):
            b[i],b[31-i] = b[31-i],b[i]
        r = int(''.join(b),2)
        return r