191. 位1的个数(JavaScript)

题目描述:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量

示例 :

输入: 11
输出: 3
解释: 整数 11 的二进制表示为 00000000000000000000000000001011

解法1

思路:将无符号整数转换成二进制,然后逐位判断是否为1

/**
 * @param {number} n - a positive integer
 * @return {number}
 */
   var hammingWeight = function (n) {
      var bin = n.toString(2);
      var len = bin.length;
      var count = 0;
      for(var i = 0; i < len; i++) {
        if(bin[i] == 1)
          count++;
      }
      return count;
    };

解法2

思路:无符号整数除2取余,循环得到二进制每一位的值

/**
 * @param {number} n - a positive integer
 * @return {number}
 */
   var hammingWeight = function (n) {
     let count = 0;
     while (n) {
       if (n % 2) 
        count++;
       n = parseInt(n / 2); 
     }
     return count;
  };

猜你喜欢

转载自blog.csdn.net/qq_34868578/article/details/82082721