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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP