LeetCode 190 顛倒二進位制數

2021-09-25 05:22:40 字數 1136 閱讀 2093

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

示例 1:

輸入:00000010100101000001111010011100輸出:00111001011110000010100101000000解釋:輸入的二進位制串00000010100101000001111010011100表示無符號整數43261596因此返回 964176192,其二進位制表示形式為00111001011110000010100101000000
示例 2:

輸入:11111111111111111111111111111101輸出:10111111111111111111111111111111解釋:輸入的二進位制串11111111111111111111111111111101表示無符號整數 4294967293,

因此返回 3221225471 其二進位制表示形式為10101111110010110010011101101001。

高階:

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

注意這個題有個令人容易忽略的地方,返回的是十進位制的數。

這裡使用的是最基本的位操作方法,這種方法是比一般加法快的,不熟悉的小夥伴可以寫寫測試一下。

class solution:

# @param n, an integer

# @return an integer

def reversebits(self, n):

res = 0

for i in range(32):

res = res << 1

res += n & 1

n = n >> 1

return res

leetcode190 顛倒二進位制

思想 定義變數ans儲存反轉之後的二進位制數,預設是全0。變數mask是1,若mask與n相與為真,則n的二進位制形式最後一位為1,此時ans需要和1或,使得當前為二進位制為1,反之ans不變即為0。n不斷左移 左移的目的是去除最後一位二進位制數 直到結束。class solution param ...

leetcode 190 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。示例 輸入 43261596輸出 964176192解釋 43261596 的二進位制表示形式為00000010100101000001111010011100,返回 964176192,其二進位制表示形式為001110010111100000101001...

LeetCode190 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。示例 輸入 43261596輸出 964176192解釋 43261596 的二進位制表示形式為00000010100101000001111010011100,返回 964176192,其二進位制表示形式為001110010111100000101001...