题解 | #求最大连续bit数#
求最大连续bit数
https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2
#include <algorithm>
#include <cstddef>
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
vector<int> GetBit(int n)
{
    vector<int> Bit;
    if(n==0)
    {
        Bit.push_back(0);
    }
    else {
         while (n>0)
        { 
            Bit.push_back(n%2);
            n = n/2;
        }
    }
    reverse(Bit.begin(),Bit.end());
    return Bit;
}
void printfvec(vector<int> Bit)
{
    for(int i = 0; i<Bit.size(); i++)
    {
        cout << Bit[i];
    }
    cout<<endl;
}
int Max(int a, int b)
{
    if(a>b)
    {
        return a;
    }
    else {
       return b;
    }
}
void MaxOneNum(vector<int> Bit)
{
    int MaxCount = 0;
    int count = 0;
    Bit.push_back(0);
    for(int i=0;i<Bit.size();i++)
    {
        if(Bit[i] == 1)
        {
            count++;
        }
        else {
            MaxCount = Max(MaxCount,count);
            count = 0;
        }
    }
    cout<<MaxCount<<endl;
}
int main() {
    int n;
    vector<int> ToBit;
    while (cin >> n) { // 注意 while 处理多个 case
        ToBit = GetBit(n);
       // printfvec(ToBit);
        MaxOneNum(ToBit);
    }
}
// 64 位输出请用 printf("%lld")
查看16道真题和解析
