码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode刷题笔记】Number of 1 Bits

时间:2015-03-30 13:09:17      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

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.

题解:利用位运算的知识,n&(n-1)的结果会出去n的最后一位1.比如n=11=1011,n-1=10=1010,那么n&(n-1)=1010,最后一位1就没有了。设置一个循环,每次赋值n=n&(n-1)。n为0的时候统计循环的次数就知道n的二进制里面有多少个1了。

Java代码:

 1 public class Solution {
 2     // you need to treat n as an unsigned value
 3     public int hammingWeight(int n) {
 4         int sum = 0;
 5         while(n != 0){
 6             sum ++;
 7             n = n&(n-1);
 8         }
 9         return sum;
10     }
11 }

 

【leetcode刷题笔记】Number of 1 Bits

标签:

原文地址:http://www.cnblogs.com/sunshineatnoon/p/4377463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!