算法刷题-查找输入整数二进制中1的个数-JAVA
0x00 引言
为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。
题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。
0x01 难度等级
简单
0x02 代码
package 简单; import java.util.Scanner; /* * 输入一个正整数,计算它在二进制下的1的个数。 注意多组输入输出!!!!!! * 多了个多组输入输出 * 示例1 输入: 5 输出: 2 说明: 5的二进制表示是101,有2个1 * * */ public class 查找输入整数二进制中1的个数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextInt()){ int b = sc.nextInt(); String s = Integer.toBinaryString(b); int count = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '1') { count++; } } System.out.println(count); } } }
0x03 算法思想
(1)JAVA int的包装类Integer有自带的把string转换为二进制形式的方法
(2)charAt()的使用,是表示一个字符一个字符的读取的含义。如果为1就count++,最后输出1的个数
(3)因为题目要多组输入输出,所以使用sc.hasNextInt()进行判断