【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)

来源:互联网 发布:网络报价单 编辑:程序博客网 时间:2024/06/07 06:16

题目

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;  }}



代码下载:https://github.com/jimenbian/GarvinLeetCode


/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/


0 0
原创粉丝点击