HJ86. 求最大连续bit数
描述
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入描述
输入一个int类型数字
输出描述
输出转成二进制之后连续1的个数
示例1
输入:
200
输出:
2
说明:
200的二进制表示是11001000,最多有2个连续的1。C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-01-27
#include <stdio.h> int main() { int a; while(scanf("%d",&a) != EOF) { int max = 0, currentMax = 0; while (a > 0){ if ((a & 0x1) == 1) { currentMax++; if (currentMax > max) { max = currentMax; } } else { currentMax = 0; } a = a >> 1; } printf("%d\n",max); } }
C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-02-09
#include <stdio.h> int main() { int n,i,j,m,k,max,count[100],x; while(scanf("%d",&n)!=EOF) { for(j=0;j<100;j++) { count[j]= 0; } i = 0; x = 0; m = n; while(m!=0) //先转换为二进制数 { k = n%2; if(k==1) { count[x]++; } else { x++; } m = n/2; n = m; } max = count[0]; for(j=1;j<=x;j++)//选出最大连续的 { if(count[j]>max) { max = count[j]; } } printf("%d\n",max); } return 0; }