题解 | 求最大连续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")