191. 位1的个数(JavaScript)
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
示例 :
输入: 11
输出: 3
解释: 整数 11 的二进制表示为 00000000000000000000000000001011
示例 2:
输入: 128
输出: 1
解释: 整数 128 的二进制表示为 00000000000000000000000010000000
思路:
方法一:
1、转换成二进制
2、遍历,出现1就将count++
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function(n) {
let str = n.toString(2),
count = 0
for (let s of str) {
if (s === '1') count ++
}
return count
};
方法二:(更快)
不断对2取模,模为1就++,然后整除2,直到0
/**
* @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
};