[LeetCode][Python]191. Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.

思路:

使用n与0xffffffff 相与得到unsigned的数值,然后使用bin()方法得到二进制表达,然后使用count方法,得到1的个数。

思路二:

使用n&(n-1), 对于一个数的二进制表达 n = XXXXXX1000, n - 1 is XXXXXX0111。n & (n - 1) will be XXXXXX0000 which is just cancel the last 1

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        n = n & 0xffffffff
        return bin(n).count("1")
def hammingWeight(self, n):
    """
    :type n: int
    :rtype: int
    """
    c = 0
    while n:
        n &= n - 1
        c += 1
    return c
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容