题解 | #求最大连续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; }
华为题库题解 文章被收录于专栏
牛客华为题库的题解