题解 | 求最大连续bit数
求最大连续bit数
https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2
//思路:首先通过对输入数据取余的方式,求二进制数值,但是求出的二进制需要逆序才能得到真正的二进制值,因此采用
//栈先进后出的逻辑,倒序弹出,得到二进制数,同时将int型转为string,然后遍历字符串中求连续1的长度
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int num;
cin >> num;
stack<int> bin;
string bin_end;
while(num){
bin.push(num % 2);
num /= 2;
}
while(!bin.empty()){
int a = bin.top();
bin.pop();
bin_end+=(to_string(a));
}
int len = bin_end.length();
int cnt=0,max=0;
for(int i=0 ; i<len ; i++){
if(bin_end[i] == '1'){
cnt++;
if(max < cnt){
max = cnt;
}
}
else{
cnt=0;
}
}
cout << max;
return 0;
}
// 64 位输出请用 printf("%lld")