题目
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.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
代码
1.递归运算,虽然leet不通过,因为时间原因
public class Solution { // you need to treat n as an unsigned value public static int hammingWeight(int n) { if(n==0) return 0; if(n==1) return 1; int total=1; int index=1; while(n-total*2>=0){ total=total*2; } n=n-total; index=index+hammingWeight(n); return index; }
2.用位运算方法
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { if(n==0) return 0; int i=0; while(n!=0){ n=n & (n-1); i++; } return i; } }
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/