在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

    以上是 在C ++中以数字的二进制形式查找最长连续运行1的程序 的全部内容, 来源链接: utcz.com/z/347415.html

    回到顶部