zoukankan      html  css  js  c++  java
  • LeetCode#191 Number of 1 Bits

    Problem Definition:

    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.

    Solution:

      基本方法,Python实现,直观到不好意思。

    1 def hammingWeight(n):
    2     count=0
    3     count+=(n%2)
    4     b=n/2
    5     while b!=0:
    6         count+=(b%2)
    7         b=b/2
    8     return count

      但是上面的代码不够“Python”,应该这么的:(reference1)(reference2)

    def hammingWeight(n):
        return (bin(n)[2:]).count('1')

       然而用位操作是很方便的:

    1 def hammingWeight(n):
    2         count=0
    3         count+=(n&1)
    4         b=n>>1
    5         while b!=0:
    6             count+=(b&1)
    7             b=b>>1
    8         return count

      或者,这样

    1 def hammingWeight(n):
    2     n=((n & 0xAAAAAAAA)>>1)+(n & 0x55555555)
    3     n=((n & 0xCCCCCCCC)>>2)+(n & 0x33333333)
    4     n=((n & 0xF0F0F0F0)>>4)+(n & 0x0F0F0F0F)
    5     n=((n & 0xFF00FF00)>>8)+(n & 0x00FF00FF)
    6     n=((n & 0xFFFF0000)>>16)+(n & 0x0000FFFF)
    7     return n
  • 相关阅读:
    了解Boost神器
    官方教程避坑:编译ARM NN/Tensorflow Lite
    信号量 PV 操作
    MAC 读写 ntfs 格式的硬盘
    poj题目分类
    Gelfond 的恒等式
    那些scp里的烂梗
    b
    jmeter集合
    Jmeter文章索引贴
  • 原文地址:https://www.cnblogs.com/acetseng/p/4656811.html
Copyright © 2011-2022 走看看