剑指 Offer 15. 二进制中1的个数——JS

题目描述

请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

第一种方法

直接遍历查询,最简单的方法,大家都能想到的。

// 第一种
var hammingWeight1 = function (n) {
    let temp = n.toString(2);
    let count = 0;
    for (let i = 0; i < temp.length; i++) {
        if (temp[i] == 1) {
            count++;
        }
    }
    return count;
};

第二种方法

正则匹配查询

// 第二种 正则
var hammingWeight2 = function (n) {
    let temp = n.toString(2).match(/1/g);
    return temp ? temp.length : 0;
}

第三种方法

将 n-1 与自身相与,进行一次计数器就 +1,直到为0.

// 第三种 位运算
var hammingWeight3 = function (n) {
    let i = 0;
    while (n) {
        n = n & (n - 1);
        i++;
    }
    return i;
}
posted @ 2021-03-17 16:19  苏洬  阅读(124)  评论(0)    收藏  举报