मान लीजिए कि हमारे पास एक सकारात्मक पूर्णांक है, हमें यह जांचना होगा कि क्या इसमें वैकल्पिक बिट्स हैं - इसलिए, दो आसन्न बिट्स के हमेशा अलग-अलग मान होंगे।
इसलिए, यदि इनपुट 10 जैसा है, तो आउटपुट ट्रू होगा, क्योंकि 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