मान लीजिए हमारे पास एक सकारात्मक पूर्णांक है, हमें जांचना है कि क्या इसमें वैकल्पिक बिट्स हैं - यानी, दो आसन्न बिट्स के मान हमेशा अलग होंगे।
इसलिए, यदि इनपुट 10 है, तो आउटपुट True होगा, क्योंकि 10 का बाइनरी प्रतिनिधित्व 1010 है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
p := n AND 1- यदि
n < 2, तो:trueवापस करें
n := n/2nशून्येतर होने तक लूप चलाएं:c := n AND 1- यदि
c XOR p == 0, तो:falseवापस करें
p := cn := n/2
trueवापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
#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;
}
};
int main(){
Solution ob;
cout << (ob.hasAlternatingBits(10));
}
इनपुट
10
आउटपुट
1