题目:
难度:Easy
相关话题:位运算
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量 )。
示例 1:
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。
示例 2:
输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000中,共有一位为 '1'。
示例 3:
输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
提示:
进阶 : 如果多次调用这个函数,你将如何优化你的算法?
思路:
因为是32
位,因此对n
右移>>
32次,每次右移检查当前最后一位是否1
。
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function(n) {
let count=0
for(let i=0;i<32;i++){
count+=n>>i&1
}
return count
};
扩展阅读: