C++程序:查找数字二进制形式中连续1的最长长度
假设我们有一个数字 n,我们需要找到其二进制表示中连续1的最长长度。
因此,如果输入类似于 n = 312,则输出将为 3,因为 312 的二进制表示为 100111000,并且存在 3 个连续的 1。
为了解决这个问题,我们将遵循以下步骤:
ret := 0,len := 0
从 i := 0 开始循环,当 i < 32 时,更新(i 增加 1),执行以下操作:
如果 n/2 是奇数,则
(len 增加 1)
否则
len := 0
ret := ret 和 len 的最大值
返回 ret
让我们看看下面的实现,以便更好地理解
源代码 (C++):
示例
#include <bits/stdc++.h> using namespace std; class Solution { public: int solve(int n) { int ret = 0; int len = 0; for(int i = 0; i < 32; i++){ if((n >> i) & 1){ len++; }else{ len = 0; } ret = max(ret, len); } return ret; } }; main(){ Solution ob; cout << ob.solve(312); }
输入
312
输出
3
广告