王廷瑋|數位醫療|智慧醫療: 190. Reverse Bits WFU

2024年7月11日 星期四

190. Reverse Bits

190. Reverse Bits


反轉給定的 32 位無符號整數的二進制位。

注意:

請注意,在某些語言中,例如 Java,沒有無符號整數類型。在這種情況下,輸入和輸出都將作為有符號整數類型給出。這不應該影響你的實現,因為無論是有符號還是無符號,整數的內部二進制表示都是相同的。在 Java 中,編譯器使用二進制補碼表示有符號整數。因此,在上面的示例 2 中,輸入表示有符號整數 -3,輸出表示有符號整數 -1073741825。

範例:

輸入:n = 00000010100101000001111010011100

輸出:964176192 (00111001011110000010100101000000)

解釋:輸入的二進制字符串 00000010100101000001111010011100 表示無符號整數 43261596,所以返回 964176192,其二進制表示為 00111001011110000010100101000000。


Python


class Solution:
def reverseBits(self, n: int) -> int:
result = 0
for i in range(32):
result = (result << 1) | (n & 1) # Shift result left and add the least significant bit of n
n >>= 1 # Shift n right to process the next bit
return result

16.58MB, 28ms


C++


class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
for (int i = 0; i < 32; ++i) {
result = (result << 1) | (n & 1); // Shift result left and add the least significant bit of n
n >>= 1; // Shift n right to process the next bit
}
return result;
}
};

7.37MB, 0ms


Javascript


/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function(n) {
let result = 0;
for (let i = 0; i < 32; i++) {
result = (result << 1) | (n & 1); // Shift result left and add the least significant bit of n
n >>= 1; // Shift n right to process the next bit
}
return result >>> 0; // Ensure the result is treated as an unsigned integer
};

51.27MB, 53ms