在 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
广告