zoukankan      html  css  js  c++  java
  • Easy | LeetCode 191 | 剑指 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二进制串

    解题思路

    技巧: 通过 n & (n-1) 可以把二进制里最右边的1变成0;

    public int hammingWeight(int n) {
        int count = 0;
        while(n != 0) {
            count++;
            n = n & (n - 1);
        }
        return count;
    }
    
  • 相关阅读:
    google搜索教程
    phoenix/stack-five
    phoenix/stack-four
    phoenix/stack-three
    phoenix/stack-one
    fork 在 Linux 内核里面的实现
    无文件执行 ELF
    glibc 堆内存管理杂记
    QOS shaping 知识要点
    QOS CQ
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14320627.html
Copyright © 2011-2022 走看看