2021/03/22 每日一题 位1的个数

LeetCode上位1的个数,简单难度,记录下解题思路

传入一个32位的二进制数,之后要求这个数内1的个数,当然可以转成字符串之后用循环或者正则表达式来匹配获取,这里使用下位运算,平时正好用得少

已知传入的数总是32位二进制串,用一个掩码从最后一位开始依次比较当前位是否为1,为1则记录下来,不为就跳过,最后掩码还要移动,进行下次计算

var hammingWeight = function(n) {
    // 计数位
    let count = 0;
    // 掩码
    let mask = 1;
    // 从最后一位开始比较
    for(let i = 0;i < 32;i++){
        if((n & mask) != 0){
            count++;
        }
        // 掩码位移
        mask <<= 1;
    }
    return count;
};

你可能感兴趣的:(2021/03/22 每日一题 位1的个数)