[LeetCode] Problem 693 - Binary Number with Alternating Bits

Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.

Example

No.1

Input: 5

Output: True

Explanation:
The binary representation of 5 is: 101

No.2

Input: 7

Output: False

Explanation:
The binary representation of 7 is: 111.

No.3

Input: 11

Output: False

Explanation:
The binary representation of 11 is: 1011.

No.4

Input: 10

Output: True

Explanation:
The binary representation of 10 is: 1010.

Code

1
2
3
4
5
6
7
8
9
10
11
12
public boolean hasAlternatingBits(int n) {
int bit = n & 1;

while ((n >>= 1) > 0) {
if ((n & 1) == bit)
return false;

bit = n & 1;
}

return true;
}