题解 | #求最大连续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;
}

全部评论

相关推荐

11-23 15:14
中原工学院 Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务