ধরুন আমাদের একটি সংখ্যা 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