Binary Number With Alternating Bits Problem
Description
LeetCode Problem 693.
Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.
Example 1:
1
2
3
Input: n = 5
Output: true
Explanation: The binary representation of 5 is: 101
Example 2:
1
2
3
Input: n = 7
Output: false
Explanation: The binary representation of 7 is: 111.
Example 3:
1
2
3
Input: n = 11
Output: false
Explanation: The binary representation of 11 is: 1011.
Example 4:
1
2
3
Input: n = 10
Output: true
Explanation: The binary representation of 10 is: 1010.
Example 5:
1
2
Input: n = 3
Output: false
Constraints:
- 1 <= n <= 2^31 - 1
Sample C++ Code
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
bool hasAlternatingBits(int n) {
int d = n & 1;
while ((n & 1) == d) {
d = 1 - d;
n >>= 1;
}
return n == 0;
}
};