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

【算法-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;
    }
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达学加瓦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值