zoukankan      html  css  js  c++  java
  • 剑指 Offer 15. 二进制中1的个数

    剑指 Offer 15. 二进制中1的个数

    地址:剑指 Offer 15. 二进制中1的个数

    问题描述:

    请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

    示例 1:

    输入:00000000000000000000000000001011
    输出:3
    解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
    示例 2:

    输入:00000000000000000000000010000000
    输出:1
    解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
    示例 3:

    输入:11111111111111111111111111111101
    输出:31
    解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

    提示:

    输入必须是长度为 32 的 二进制串 。

    注意:本题与主站 191 题相同:https://leetcode-cn.com/problems/number-of-1-bits/

    //注意位运算技巧
    // n & (n-1) 去除 n最后侧的1
    object Solution {
        // you need treat n as an unsigned value
        def hammingWeight(n: Int): Int = {
            var count = 0
            var num = n
            while (num != 0){
                count += 1
                num = (num & num-1)
            }
            return count
        }
    }
    
    func hammingWeight(num uint32) int {
        res := 0
        for (num > 0) {     
                res += 1
            num = num & (num-1)
        }
        return res
    }
    
    func hammingWeight(num uint32) int {
        res := 0
        for i := 0; i < 32; i++ {
            if num & 1 == 1 {
                res += 1
            }
            num = num >> 1
        }
        return res
    }
    
  • 相关阅读:
    Java Number & Math 类
    excel小技巧-转置(表的横向纵向倒过来)
    excel小技巧-提取填充
    excel小技巧-分列
    Java switch case语句
    if...else
    12.15个人总结
    12.9个人总结
    11.29个人总结
    11.25日个人总结
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14151100.html
Copyright © 2011-2022 走看看