原题
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
示例 1:
输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
示例2:
输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例3:
输入:11111111111111111111111111111101输出:31解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
提示:
输入必须是长度为 32
的 二进制串 。
注意:本题与主站 191 题相同:https://leetcode-cn.com/problems/number-of-1-bits/
题解
public class Solution {//循环向右移动n 然后与1比较public int hammingWeight(int n) {int count = 0;while(n!=0){count += n&1;n >>>= 1;}return count;}}
public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int count = 0;while(n!=0){count++; //n &=(n-1);}return count;}}