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

求最大连续bit数

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

思路

  1. 将10进制转为2进制,将其存到数组中
  2. 利用移位统计1的个数,不断更新最大值
  3. 循环完毕输出最大值

Answer

#include<stdio.h>

int main() {
    int val;
    int cnt = 0;
    int num[1000];
    while (scanf("%d", &val) != EOF) {
        while (1) {//将10进制转为2进制并存到数组中
            if (val == 1) {
                num[cnt++] = 1;
                break;
            }
            if (val % 2 == 1) {
                num[cnt++] = 1;
            } else {
                num[cnt++] = 0;
            }
            val /= 2;
        }
        int j = 0;
        int max = 0;
        //统计1的个数
        for (int i = 0; i < cnt; i++) {
            if (num[i] & 0x01) {
                j++;
                if (j > max) {
                    max = j;
                }
            } else {
                j = 0;
            }
        }
        printf("%d", max);
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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