java求最大连续bit数


题目描述

求一个byte数字对应的二进制数字中1的最大连续数

例如:
3的二进制为00000011,最大连续2个1

输入:
3
5

输出:
2
1


以下是本篇文章正文内容,下面案例可供参考

解题思路1

因为转换为二进制后,只有0或1,现在要求得1 的最大连续个数

可以将其转化为二进制,再将转换好的二进制以0分隔,统计分隔好的字符串的最大长度

代码如下


import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            String s = Integer.toBinaryString(n);//转化为二进制
            String[] str = s.split("0");//将其用0分隔
            int max = 0;
            for (String value : str) {//把每一段字符串给value
                if (value.length() > max) {//统计最大值
                    max = value.length();
                }
            }
            System.out.println(max);
        }
    }
}

解题思路2

用与运算(&)记录连续1 的个数,定义一个count 和 一个maxCount

count 表示当前连续1 的个数,maxCount 表示最大连续1 的个数

判断完n的当前位后,n左移一位,继续判断,直到得到最大连续1 的个数为止

代码如下

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int count = 0;
            int maxCount = 0;
            while (n!=0){
                if((n&1)==1){//表示当前位是1
                    count ++;
                    maxCount = Math.max(maxCount,count);
                }else {
                    count=0;
                }
                n>>=1;//n左移一位
            }
            System.out.println(maxCount);
        }
    }

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值