题目链接:
力扣https://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