leetcode刷題筆記191 位1的個數
阿新 • • 發佈:2018-04-30
none c++ open 二進制中1的個數 sed 二進制 aik HR while
題目描述:
編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數為 ‘1’ 的個數(也被稱為漢明重量)。
示例:
輸入: 11 輸出: 3 解釋: 32位整數 11 的二進制表示為 00000000000000000000000000001011 。
題目分析:
判斷32位二進制中1的個數,此題利用n&(n-1)性質可解
解答代碼:
C++版:
class Solution { public: int hammingWeight(uint32_t n) { int ans=0; while(n>0){ nCode=n&(n-1); ans++; } return ans; } };
Python版:
class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ ans=0 while n>0: n=n&(n-1) ansCode+=1 return ans
leetcode刷題筆記191 位1的個數