第四单元的LeetCode题解

191.位1的个数

2018-04-11  本文已影响4人  第四单元

题目

编写一个函数,输入是一个无符号整数,返回的是它所有 位1 的个数(也被称为汉明重量)。

例如,32位整数 '11' 的二进制表示为 00000000000000000000000000001011,所以函数返回3。

思路

位运算。数字分别和1,2,4,8……2^31做与运算,如果结果不是0说明对应位置上是1。统计个数即可。

代码

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int count = 0;
        int c = 1;

        for(int i = 0; i < 32; i++) {
            if((n & (c << i)) != 0)
                count++;
        }    

        return count;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读