南阳市网站建设_网站建设公司_定制开发_seo优化
2026/1/19 20:10:22 网站建设 项目流程

每天学习一点算法 2026/01/19

题目:位1的个数

给定一个正整数n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

  1. 最容易想到的方法就是,遍历二进制字符串,统计 1 的个数(找 1 怎么感觉怪怪的)

    functionhammingWeight(n:number):number{conststr=n.toString(2)letcount=0for(letiofstr){if(i==='1')count++}returncount};
  2. 我们还有一种取巧的方法,js 字符串的 split 方法,可以分割字符串,如果们使用 1 分割字符串,那么结果数组长度减一就是 1 的个数

    function hammingWeight(n: number): number { const str = n.toString(2) return str.split('1').length - 1 };
  3. 我们知道二进制是满二进一,那么二进制运算n - 1就是讲最右侧的 1 变成 0,让后讲这个 1 右侧的 0 变成 1,然后我们对nn - 1进行&运算

    按位与(&)的规则是:只有对应位都为 1 时,结果才为 1,否则为 0

    所以n & (n - 1)的结果就会将最右侧的 1 变成 0,我们循环执行n = n & (n - 1)直到 n 变成 0,循环次数就是 1 的个数

    functionhammingWeight(n:number):number{letcount=0while(n){n&=(n-1)count++}returncount};

题目来源:力扣(LeetCode)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询