【牛客华为机试】HJ15 求int型正整数在内存中存储时1的个数

155 阅读1分钟

题目描述

在这里插入图片描述

描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述: 输入一个整数(int类型)

输出描述: 这个数转换成2进制后,输出1的个数

题解

通过包装器的Integer.toBinaryString()把int整数转为字符串形式二进制形式,通过把1替换为""可以知道没有1时的二进制形式的长度。

运行时间:36ms 超过48.77% 用Java提交的代码

占用内存:10724KB 超过13.22%用Java提交的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            int input = in.nextInt();
            int output = CountOne(input);
            System.out.println(output);
        }
    }
    
    public static int CountOne(int a) {
        int count = 0;
        String str = Integer.toBinaryString(a);
        count = str.length() - str.replace("1", "").length();
        return count;
    }
}