ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা আছে, আমাদের পরীক্ষা করতে হবে এতে বিকল্প বিট আছে কিনা - তাই, দুটি সন্নিহিত বিটের সবসময় আলাদা মান থাকবে।
সুতরাং, যদি ইনপুট 10 এর মত হয়, তাহলে আউটপুট হবে True, যেহেতু 10-এর বাইনারি উপস্থাপনা হল 1010৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- p :=n এবং 1
- যদি n <2, তাহলে −
- সত্য ফেরত দিন
- n :=n/2
- যখন n অ-শূন্য, কর −
- c :=n এবং 1
- যদি c XOR p 0 এর মত হয়, তাহলে −
- মিথ্যে ফেরত দিন
- p :=c
- n :=n/2
- সত্য ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool hasAlternatingBits(int n) {
bool p=n&1;
bool c;
if(n<2)
return true;
n>>=1;
while(n){
c=n&1;
if(c^p==0)
return false;
p=c;
n>>=1;
}
return true;
}
};
main(){
Solution ob;
cout << (ob.hasAlternatingBits(10));
} ইনপুট
10
আউটপুট
1