在 C++ 中使用交替位表示的二進位制數


假設我們有一個正整數,我們需要檢查它是否有交替位 - 即,兩個相鄰的位總是有不同的值。

因此,如果輸入是 10,則輸出將為 True,因為 10 的二進位制表示形式為 1010。

要解決這個問題,我們將遵循以下步驟 -

  • p := n AND 1
  • if n < 2, then −
    • 返回 true
  • n := n/2
  • while n 非零,執行 -
    • c := n AND 1
    • if c XOR p 與 0 相同,則 -
      • 返回 false
    • p := c
    • n := 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;
   }
};
main(){
   Solution ob;
   cout << (ob.hasAlternatingBits(10));
}

輸入

10

輸出

1

更新於: 04-Jul-2020

401 次瀏覽

開啟您的職業生涯

完成課程以獲得認證

開始
廣告