二进制中1的个数,两种解法

二进制中1的个数

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

解法一

直接利用Integer提供的API将数字转化为二进制表示的字符串,然后就可以直接通过charAt()记录1的个数,或者使用replace()把0给替换掉再返回字符串长度。

public class Solution {
    // replace替换
    public int NumberOf1(int n) {
        return Integer.toBinaryString(n).replace("0","").length();
    }

    // 遍历字符串记录
    public int NumberOf1(int n) {
        String str = Integer.toBinaryString(n);
        int length = str.length();
        int count = 0;
        for (int i=0; i<length; i++) {
            if (str.charAt(i) == '1') {
                count++;
            }
        }
        return count;
    }
}

解法二

将数字与1进行与运算,返回结果为1则表明数字二进制最后一位是1,通过对不断数字右移运算判断有多少个1。

public class Solution {
    public int NumberOf1(int n) {
        int res = 0;
        while (n != 0) {
            res += n & 1;
            n >>>= 1;
        }
        return res;
    }
}
全部评论

相关推荐

程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
10-30 16:31
重庆大学 Java
代码飞升_不回私信人...:你说你善于学习,大家都会说。你说你是985,985会替你表达一切
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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