在C ++中以数字的二进制形式查找最长连续运行1的程序
假设我们有一个数字n,我们必须找到其二进制表示形式中最长的连续游程1s的长度。
因此,如果输入类似于n=312,则输出将为3,因为312是二进制的100111000,并且有3个连续的1。
为了解决这个问题,我们将遵循以下步骤-
ret:=0,len:=0
对于初始化i:=0,当i<32时,更新(将i增加1),请执行以下操作:
len:=0
(将len增加1)
如果n/2为奇数,则
除此以外
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
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短