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的个数