191. 位1的個數 【簡單題】【位運算】編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 『1』 的個數(也被稱為漢明重量)。
輸入:00000000000000000000000000001011
輸出:3
解釋:輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 '1'。
輸入:00000000000000000000000010000000
輸出:1
解釋:輸入的二進位制串 00000000000000000000000010000000 中,共有一位為 '1'。
輸入:11111111111111111111111111111101
輸出:31
解釋:輸入的二進位制串 11111111111111111111111111111101 中,共有 31 位為 '1'。
解法1:位運算
【核心思想】
【舉例說明】
【**】
public
class
solution
return ans;
}}
【備註】這道題還有一種更簡單的方法。首先我們要知道n & (n - 1)
代表著把n的最後乙個1變成0,為什麼?舉例說明,令n = 10110
,那麼n - 1 = 10101
,n & (n - 1) = 10110 & 10101 = 11100
,確實把最後乙個1變成了0。嚴密的證明過程讀者可以自己探索一下
所以,只要重複n & (n - 1)
的操作,直到n == 0
,那麼操作了幾次,n中就有幾個1
public
class
solution
return ans;
}}
210322 漢明重量
編寫乙個函式,輸入是乙個無符號整數 以二進位制串的形式 返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 class solution def hammingweight self,n int int return bin n count 1 注意到,n 1可以判斷n的最後一位是否為1...
漢明重量(Hamming Weight)
就是將乙個字串變換成另外乙個字串所需要替換的字元個數。例如 1011101 與 1001001 之間的漢明距離是 2。2143896 與 2233796 之間的漢明距離是 3。toned 與 roses 之間的漢明距離是 3。乙個符號串的 漢明重量 等於 同樣長度的全零符號串的 漢明距離。在最為常見...
減一與運算計算漢明重量
刷leetcode還是能學到很多小知識的,今天學到了如何在二進位制數中快速輸出有幾個1,二進位制中1的個數也稱為漢明重量 思路很簡單 1 設個數為0,原始資料是n 2 如果n等於0,輸出個數,如果不等於零,n n n 1 3 個數加1,迴圈 2 舉個例子就很清楚了 n 01001 n n n 1 0...