ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের এটির বাইনারি উপস্থাপনায় 1s-এর দীর্ঘতম ক্রমাগত রানের দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি n =312 এর মত হয়, তাহলে আউটপুট হবে 3, যেহেতু 312 বাইনারিতে 100111000 এবং সেখানে 3টি পরপর 1s আছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=0, len :=0
-
আরম্ভ করার জন্য i :=0, যখন i <32, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন:
-
যদি n/2 বিজোড় হয়, তাহলে
-
(লেন 1 দ্বারা বাড়ান)
-
-
অন্যথায়
-
len :=0
-
-
ret :=সর্বোচ্চ ret এবং len
-
-
রিটার্ন রিটার্ন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
সোর্স কোড (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