LeetCode 190 顛倒二進位制位

2022-09-22 06:31:50 字數 1422 閱讀 2513

問題描述:

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

示例:

輸入:43261596輸出:964176192解釋:43261596 的二進位制表示形式為00000010100101000001111010011100

返回 964176192,其二進位制表示形式為00111001011110000010100101000000

進階:

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

方法1:常規操作,易錯點在給頭部補0.

1

class

solution:2#

@param n, an integer3#

@return an integer

4def

reversebits(self, n):

5 input_b =bin(n)

6 input_b = input_b[2:]

7 input_b = "

0"*(32-len(input_b))+input_b

8 input_b = input_b[::-1]

9return int(input_b,2)

方法2:

1

class

solution:2#

@param n, an integer3#

@return an integer

4def

reversebits(self, n):

5 res='

'.format(n)#

注意轉換成32為無符號整形,res=bin(n)在這裡會出錯,ide不會

6 res=res[::-1]#

翻轉7 res=int(res,2)

8return res

方法3:

1

class

solution:2#

@param n, an integer3#

@return an integer

4def

reversebits(self, n):

5 binary_n =bin(n)

6 reversed_n = ''.join(reversed('

'.format(int(binary_n[2:]))))

7return int(reversed_n, 2)

2018-09-16 07:48:24