210322 漢明重量

2021-10-22 22:09:28 字數 1206 閱讀 6976

編寫乙個函式,輸入是乙個無符號整數(以二進位制串的形式),返回其二進位制表示式中數字位數為 『1』 的個數(也被稱為漢明重量)。

class

solution

:def

hammingweight

(self,n:

int)

->

int:

return

bin(n)

.count(

'1')

注意到,n&1可以判斷n的最後一位是否為1,每次判斷完最後一位後,丟棄最後一位,繼續判定即可,直至遍歷到第一位。

丟棄最後一位需要用到移位。移位有兩種:邏輯移位與算術移位。

移位裡還是有挺多坑的,我覺得這篇文章總結的不錯,可以參考一下。

移位邏輯移位:不考慮符號位,移位的結果只是資料所有的位數進行移位。根據移位操作的目的,左移時,低位補0,右移時,高位補0

算術移位:右移時要考慮符號位

對於此題,使用邏輯移位,直至n變為0

class

solution

:def

hammingweight

(self,n:

int)

->

int:

rest =

0while

(n):

rest+=n&

1 n>>=1

return rest

注意,不能寫成rest=rest+n&1,由於優先順序的問題,會導致結果不正確。

這個**可以把 n 的二進位制中,最後乙個出現的 1 改寫成 0。

class

solution

:def

hammingweight

(self,n:

int)

->

int:

rest =

0while

(n):

rest+=

1 n=n&

(n-1

)return rest

class solution 

return res;

}};class solution

return res;

}};

漢明重量(Hamming Weight)

就是將乙個字串變換成另外乙個字串所需要替換的字元個數。例如 1011101 與 1001001 之間的漢明距離是 2。2143896 與 2233796 之間的漢明距離是 3。toned 與 roses 之間的漢明距離是 3。乙個符號串的 漢明重量 等於 同樣長度的全零符號串的 漢明距離。在最為常見...

什麼是漢明重量

191.位1的個數 簡單題 位運算 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001...

減一與運算計算漢明重量

刷leetcode還是能學到很多小知識的,今天學到了如何在二進位制數中快速輸出有幾個1,二進位制中1的個數也稱為漢明重量 思路很簡單 1 設個數為0,原始資料是n 2 如果n等於0,輸出個數,如果不等於零,n n n 1 3 個數加1,迴圈 2 舉個例子就很清楚了 n 01001 n n n 1 0...