我是靠谱客的博主 积极橘子,最近开发中收集的这篇文章主要介绍算法题 位1的个数(简单题),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '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的个数(简单题)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部