LeetCode190 顛倒二進位制位

2021-08-30 06:26:04 字數 861 閱讀 1917

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

示例:

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

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

高階:

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

把某個二進位制數字顛倒一下,那我們可以從後向前的取這個二進位制數字的每一位數,同時從前到後的重新賦值給我們的結果。

與運算在兩個數字都為1的時候才是1,我們可以讓00000010100101000001111010011100這一大串數字依次和 1 做與運算,如果結果為0, 那麼當前位就是0,結果是1 當前位是1;做完與運算還要將數字向右位移一位,結果向左位移一位,同時還要加上當前位,如果是1則加1,是0就不加。

下面的**是我在提交之後發現的時間最快的,它把我用的+1換成了或運算,這樣會更快些。

public class solution 

return result;

}}

public class solution 

return result;

}}

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...

LeetCode 190 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。示例 1 輸入 00000010100101000001111010011100輸出 00111001011110000010100101000000解釋 輸入的二進位制串00000010100101000001111010011100表示無符號整數432...