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