算法刷题-求int型正整数在内存中存储时1的个数-JAVA

0x00 引言

为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。

题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。

0x01 难度等级

简单

0x02 代码

package 简单;

import java.util.Scanner;
/*
*
* 描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。

数据范围:保证在 32 位整型数字范围内
输入描述:
 输入一个整数(int类型)

输出描述:
 这个数转换成2进制后,输出1的个数
 *
 *
 示例1
输入:
5

输出:
2
*
* */
public class 求int型正整数在内存中存储时1的个数 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int b=sc.nextInt();
        String s=Integer.toBinaryString(b);
//        System.out.println(s);
        int count=0;
        for (int i = 0; i < s.length(); i++) {
//            System.out.println(s.charAt(i));
            if(s.charAt(i)=='1'){
                count++;
            }
        }
        System.out.println(count);
    }
}

0x03 算法思想

跟上一篇差不多:

(1)JAVA int的包装类Integer有自带的把string转换为二进制形式的方法

(2)charAt()的使用,是表示一个字符一个字符的读取的含义。如果为1就count++,最后输出1的个数

0x04 运行结果

posted @ 2023-02-28 22:01  铺哩  阅读(31)  评论(0编辑  收藏  举报