题解 | #求最大连续bit数#

求最大连续bit数

https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2

解题思路

设置一个整型数组用来存储接收的十进制对应的二进制

然后通过循环遍历数组,一个变量计算单次连续出现1的次数,一个变量用于存储出现1的最大次数

#include <stdio.h>

int main() {
    int n[500000]={0};
    int a=0,i=0,num=0,max=0;//a为接受的数字,i为控制循环的,num为存储单次1出现的次数,遇到0就自动归零,max为存储连续1出现次数的最大值
    scanf("%d",&a);
    while(a>0)//十进制转二进制
    {
        n[i]=a%2;
        a/=2;
        i++;
    }
    for(--i;i>=0;i--)//循环遍历数组,--i的目的是因为while循环结束后i的值会多1,因此在循环开始时先自减1,虽然减不减都可以,因为数组初始化时全是0,多一位也是0,但是为了严格一点,就先自减1
    {
        if(n[i]==1)//当遇到1时就num自动增加1
        {
            num++;
        }
        else if(n[i]==0)//当遇到0时,将num与最大值进行比较,如果最大值小于num,则最大值等于num,num置为0
        {
            if(max<num)
            {
                max=num;
            }           
            num=0;
        }
        if(max<num)//当连续出现1的最大值小于num,令max=num
            {
                max=num;
            }  
    }
    printf("%d",max);
    
    return 0;
}

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-08 00:50
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务