編寫乙個函式,輸入是乙個無符號整數(以二進位制串的形式),返回其二進位制表示式中數字位數為 『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...