1. Number of 1 Bits

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

Example 1:

Input: 00000000000000000000000000001011
Output: 3
Explanation: The input binary string 00000000000000000000000000001011 has a total of three '1' bits.

Example 2:

Input: 00000000000000000000000010000000
Output: 1
Explanation: The input binary string 00000000000000000000000010000000 has a total of one '1' bit.

Example 3:

Input: 11111111111111111111111111111101
Output: 31
Explanation: The input binary string 11111111111111111111111111111101 has a total of thirty one '1' bits.

Note:

  • Note that in some languages such as Java, there is no unsigned integer type. In this case, the input will be given as signed integer type and should not affect your implementation, as the internal binary representation of the integer is the same whether it is signed or unsigned.
  • In Java, the compiler represents the signed integers using 2's complement notation. Therefore, in Example 3 above the input represents the signed integer -3.

解1 移位+统计1的个数。每次看n的最后一位是不是1,然后右移一位,直到n==0成立

class Solution {
public:
int hammingWeight(uint32_t n) {
int res = 0;
while(n){
if(n & 1 == 1)res++;
n >>= 1;
}
return res;
}
};

解2 将n中的1全部翻转。n&(n-1)会使n翻转最后一个1

class Solution {
public:
int hammingWeight(uint32_t n) {
int res = 0;
while(n){
res++;
n &= n - 1;
}
return res;
}
};

最新文章

  1. jQuery页面加载初始化的3种方法
  2. C#基础-技术还债3-枚举【pending】
  3. Java Web项目RSA加密
  4. VS2010--canot determine the locationof the vs common tools folder
  5. flv文件格式解析!!!
  6. poj2027
  7. mysql中实现oracle中的rowid功能
  8. php的fread函数的一个巨大的坑
  9. [置顶] JNI之java传递数据给c语言
  10. MDK的优化应用
  11. Ubuntu开启NFS,挂载根目录
  12. gulp前端自动化工作流
  13. object.observe被废弃了怎么办
  14. 【float】与【position】汇总
  15. PhpDocumentor
  16. RabbitMq windows 安装
  17. drupal7 获取当前使用的主题的名称
  18. 用批处理在windows中导出/导入无线网络信息,复制保存为bat即可
  19. 常见的CSS和HTML面试题
  20. thinkphp5使用QueryList实现采集功能

热门文章

  1. CF934A A Compatible Pair 题解
  2. [Elasticsearch] ES 的Mapping 设计在实际场景中应用
  3. MimeTypes数值表
  4. vue的一些细节
  5. c++之面试题(2)实现字符串的分割函数SplitStr
  6. 【LeetCode】1151. Minimum Swaps to Group All 1's Together 解题报告 (C++)
  7. 【LeetCode】111. Minimum Depth of Binary Tree 解题报告(Python)
  8. 如何把 MySQL 备份验证性能提升 10 倍
  9. Laravel 使用 maatwebsite/Excel 3.1 实现导入导出的简单方法
  10. 「算法笔记」BSGS 与 exBSGS