Java 求二进制中的1的个数

时间:2022-01-24作者:klpeng分类:IT综合浏览:343评论:0

题目:

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。

输入格式

第一行包含整数 nn。

第二行包含 nn 个整数,表示整个数列。

输出格式

共一行,包含 nn 个整数,其中的第 ii 个数表示数列中的第 ii 个数的二进制表示中 11 的个数。

数据范围

1≤n≤1000001≤n≤100000,
0≤数列中元素的值≤1090≤数列中元素的值≤109

输入样例:

5
1 2 3 4 5

输出样例:

1 1 2 1 2

题解:

        运用java中Integer类求出数的二进制,String类来替换二进制的1变成空,然后前后字符串长度相减就是1的个数。

代码:


import java.util.Scanner;

public class Main {
    static int judge(int t){
        
        String str = Integer.toBinaryString(t);
        String l = str.replace("1","");
        return str.length()-l.length();
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for(int i = 0 ;i<n;i++){
            int temp = sc.nextInt();
            int count = judge(temp);
            System.out.print(count+" ");
        }
    }
}

取巧的方法

        直接调用 Integer.bitCount(int n)的方法,得出n二进制的1的个数

        代码:

public class Main{

    public static void main(String[]args){

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for(int i = 0 ;i<n;i++) {
            System.out.print(Integer.bitCount(n) + " ");
        }
    }
}

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢