Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.
解题思路:转字符或者借助容器,或者利用%
java:
package leedcode;
public class numberOf1bit {
public static int hammingWeight(int n) {
int num = 0;
String[] s = Integer.toBinaryString(n).split("");//关键部分
for (int i = 0; i < s.length; i++){
if (s[i].equals("1"))
num++;
}
return num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(hammingWeight(00000000000000000000000000000010));
}
}
java版本2:
package leedcode;
public class numberOf1bit {
public static int hammingWeight(int n) {
int num = 0;
while(n!=0){
n&=n-1;//按位与
num++;
}
return num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(hammingWeight(00000000000000000000000000000010));
}
}
java版本3:
public static int hammingWeight(int n) {
return Integer.bitCount(n);//本质还是位运算
}
c++版本1:
class Solution {
public:
int hammingWeight(uint32_t n) {
bitset<32> num(n);
return num.count();
}
};
c++版本2
class Solution {
public:
int hammingWeight(uint32_t n) {
int num=0;
while(n!=0){
if(n%2==1)
num++;
n/=2}
return num;
}
};