假设我们有一个正整数,我们必须检查它是否具有交替位-因此,两个相邻位将始终具有不同的值。
因此,如果输入类似于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