在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