美文网首页
[LeetCode][Python]191. Number of

[LeetCode][Python]191. Number of

作者: bluescorpio | 来源:发表于2017-05-09 18:00 被阅读72次

    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
    

    相关文章

      网友评论

          本文标题:[LeetCode][Python]191. Number of

          本文链接:https://www.haomeiwen.com/subject/ycjitxtx.html