LeetCode 191. 位1的个数

题目链接:

力扣icon-default.png?t=M276https://leetcode-cn.com/problems/number-of-1-bits/

【分析】统计1的个数,Python中可以直接调用bin将int转为以0b开头的二进制字符串然后用count统计1出现的次数,java中可以用Integer.bitCount函数直接统计。

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        return Integer.bitCount(n);
    }
}
class Solution:
    def hammingWeight(self, n: int) -> int:
        return bin(n).count('1')

关于Java中这个api的实现原理可以参考这两篇大佬写的博客:

Integer.bitCount() 函数理解(尽量通俗易懂)_喜欢下雨所以爱上雷震子的博客-CSDN博客_integer.bitcountbitCount(int i) 函数,实现统计一个数的二进制位有多少个 1 。如 5 的二进制为 101,返回 2。Jdk1.8 源码如下。初看一脸懵逼,再看还是一脸懵逼,分析 2 小时后,轰然开朗,遂有此文。public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i >&ghttps://blog.csdn.net/qq_27007509/article/details/112246576 java中Integer.bitCount()方法的实现(个人理解)_123659的博客-CSDN博客_bitcountInteger.bitCount()方法用于统计二进制中1的个数。方法体如下: public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); ...https://blog.csdn.net/qq_33977728/article/details/80252241?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=1

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值