1. 程式人生 > >leetcode刷題筆記191 位1的個數

leetcode刷題筆記191 位1的個數

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){
            n
=n&(n-1); ans++; } return ans; } };
Code

Python版:

技術分享圖片
class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        ans=0
        while n>0:
            n=n&(n-1)
            ans
+=1 return ans
Code

leetcode刷題筆記191 位1的個數