题目描述:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
例题描述:
题目分析:
题目的要求很简单,就是要求将输入的32位无符号整数中含有1的个数统计出来
解题思路:
当我拿到这道题目的时候,我首先想到的是通过将他拆分为数组,一个一个的循环判断来做,这样的作法是没有问题的,但是可能是平台的隐藏要求?还是什么的,这种方法得出来的结果在vs code上运行的和在力扣上运行的是完全不一样的,我盲目猜测,也许是他将这个数当成了有符号数?原因我还没有找到,找到的朋友可以私信一下我(万分感谢)
代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11var hammingWeight = function(n) { var count=0 var num =n.toString() var nums =num.split('') for(var i in nums){ if(nums[i] !=0){ count++ } } return count }
代码的逻辑非常的简单,就是将他先化为字符串,在化为数组,之后判断即可
因为这种方法无法得到答案,所以我又换了一个做法
我想到了位移的那个运算
解题思路:
同样还是通过一样的逻辑
代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10var hammingWeight = function(n) { var count=0 while(n){ if(n&1){ count++ } n=n >>>1 } return count };
唯一改变的地方在于判断结束之后,需要去掉最后一位,不断地判断,知道n为0
最后
以上就是积极橘子最近收集整理的关于算法题 位1的个数(简单题)的全部内容,更多相关算法题内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复