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

求最大连续bit数

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

#include <bits/stdc++.h>

using namespace std;

//求1的个数
int oneNum(int num){
    int res = 0;
    while(num){         
        num = num & (num - 1);
        res++;
    }
    
    return res;
}

//n进制转换
string jinZhiTrans(int m, int n){
    if(m == 0) return "0";
    bool posFlag = false; //标记是不是负数
    if(m < 0){
        posFlag = true;
        m = -m;
    }
    
    string res = "";
    string help = "0123456789ABCDEF"; //辅助的进制转换字符串
    while(m){
        res += help[m % n];
        m /= n;
    }
    
    reverse(res.begin(), res.end());
    if(posFlag) res.insert(0, "-");
    
    return res;
}

int main(){
    int num = 0;
    while(cin >> num){
        string s = jinZhiTrans(num, 2);
        //滑动窗口
        int res = INT_MIN;
        for(int i = 0; i < s.size(); i++){         
            //滑动窗口
            if(s[i] == '1'){
                int right = i;
                while(s[right] == '1'){
                    right++;
                }
                res = max(res, right - i);
            }    
        }
        
        cout << res << endl;
    }
    
    return 0;
}

华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务