Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình tìm chuỗi chạy liên tiếp dài nhất của 1 ở dạng nhị phân của một số trong C ++

Giả sử chúng ta có một số n, chúng ta phải tìm độ dài của chuỗi 1s dài nhất liên tiếp trong biểu diễn nhị phân của nó.

Vì vậy, nếu đầu vào là n =312, thì đầu ra sẽ là 3, vì 312 là 100111000 trong hệ nhị phân và có 3 số 1 liên tiếp.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ret:=0, len:=0

  • để khởi tạo i:=0, khi tôi <32, hãy cập nhật (tăng i lên 1), thực hiện:

    • nếu n / 2 là số lẻ thì

      • (tăng len lên 1)

    • Nếu không

      • len:=0

    • ret:=tối đa ret và len

  • trả lại ret

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn:

Mã nguồn (C ++) -

Ví dụ

#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);
}

Đầu vào

312

Đầu ra

3