题解 | #求最大连续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道真题和解析