1. 程式人生 > >【leetcode】Python實現-190.顛倒二進位制位

【leetcode】Python實現-190.顛倒二進位制位

190.顛倒二進位制位

描述

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

示例

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

進階

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

我,ide不出錯,但leetcode不通過。

class Solution:
    # @param n, an integer
    # @return an integer
    def
reverseBits(self, n):
l = list(bin(n))[2:] l = list(map(int,l)) l.reverse() l = list(map(str,l)) l = ['0','b'] + l s = ''.join(l) return int(s,2)

看到網上說需要格式化為32位無符號數。
即使用python的format格式化。’{0:032b}’.format(n)將n轉化為32位無符號數。
修改

class Solution
:
# @param n, an integer # @return an integer def reverseBits(self, n): l = list('{0:032b}'.format(n)) l = list(map(int,l)) l.reverse() l = list(map(str,l)) s = ''.join(l) return int(s,2)

二刷

        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

然後其實大家都使用的是移位運算來處理。format和移位運算已做出總結。