题解 | #二进制中1的个数#

二进制中1的个数

http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

F1.利用

import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
    	//定义计数变量
        int count = 0;
        //循环
        while (n != 0){
            //由于1的前31位都为0,最后一位为1,和n这个数字做与运算可以判断n的最后一位是0还是1,如果为1就计数
            count += n&1;
            //每次判断完之后,n无符号右移一位,(注意不能为有符号右移,有符号右移高位补1,会造成死循环)
            n >>>= 1;
        }
        return count;
    }
}

F2.为了避免右移操作时不注意使用了有符号右移的操作;

import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        for (int i = 0; i < 32; i++) {
            count += n&1;
            n >>= 1;
        }
        return count;
    }
}

F3.使用java自带的api

import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
       return Integer.bitCount(n);
    }
}
全部评论

相关推荐

ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务