編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 『1』 的個數(也被稱為漢明重量)。
輸入:00000000000000000000000000001011輸出:3
解釋:輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 『1』。
輸入:00000000000000000000000010000000方法一:迴圈和位移動輸出:1
解釋:輸入的二進位制串 00000000000000000000000010000000 中,共有一位為 『1』。
輸入:11111111111111111111111111111101
輸出:31
解釋:輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為 『1』。
public
inthammingweight
(int n)
mask <<=1;
}return bits;
}
方法二:位操作的小技巧
我們可以把前面的演算法進行優化。我們不再檢查數字的每乙個位,而是不斷把數字最後乙個 1 反轉,並把答案加一。當數字變成 0 的時候偶,我們就知道它沒有 1 的位了,此時返回答案。
這裡關鍵的想法是對於任意數字 n ,將 n 和 n - 1 做與運算,會把最後乙個 1 的位變成 0 。
public
inthammingweight
(int n)
return sum;
}
Leetcode191 位1的個數
題目 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 輸入 11111111111111111111111111111101 輸出 31 解釋 輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為...
LeetCode 191 位1的個數
題意 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 lowbit n 定義為非負整數 n nn 在二進位制表示下最低位的 1 11 及其後邊所有的 0 00 構成的數值。方法一 n n 1 作用 將 n nn 的二進位制表示中最低位的 1 11 ...
LeetCode 191 位1的個數
問題描述 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 11輸出 3解釋 整數 11 的二進位制表示為00000000000000000000000000001011示例 2 輸入 128輸出 1解釋 整數 128 的二進位制表示為0...