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