【算法-Java实现】计算int对应二进制中1的个数

it2025-10-07  2

【算法-Java实现】计算int对应二进制中1的个数

一.问题描述:

1.输入:输入一个int类型整数

2.输出:输出这个整数int对应二进制中1的个数

比如:输入14,对应的二进制数是1110,则输出3

​ 输入15,对应的二进制数是1111,则输出4

二.问题解答:

1.输入一int类型十进制数,转换为二进制数(除二取余法),创建一个String类型字符串s依次存入余数,将s转为字符数组,创建统计变量count统计数组中1的个数即可。

2.为了方便将这个二进制数的打印,本题将String字符串转为StringBuffer字符串sb,调用sb的reverse()方法即可打印出这个二进制数

3.reverse()方法实现的是字符串反转,至于为何要实现反转,具体查阅除二取余法

比如:输入14,s中存放的依次为0111,调用b.reverse().toString()即可打印出1110

三.算法分析:

时间复杂度O(n),额外空间复杂度O(1)

代码如下

import java.util.*; public class Solution { /** * 计算int对应二进制中1的个数 * @param n int整型 数字 * @return int整型 */ public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); int result=countBit (n); System.out.println(result); } public static int countBit (int n) { // write code here String s=""; //除二取余法 while(n>0) { int a=n%2; n/=2; s+=Integer.valueOf(a); } StringBuffer sb=new StringBuffer(s); String s2=sb.reverse().toString(); //打印出这个二进制数字 //System.out.println(s2); int count=0;//统计变量 char[] array=s2.toCharArray(); for(int i=0;i<array.length;i++) { if(array[i]==1); count++; } return count; } }
最新回复(0)