# 693. Binary Number with Alternating Bits

## Description

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

Example 1:

Input: n = 5
Output: true
Explanation: The binary representation of 5 is: 101


Example 2:

Input: n = 7
Output: false
Explanation: The binary representation of 7 is: 111.

Example 3:

Input: n = 11
Output: false
Explanation: The binary representation of 11 is: 1011.

Constraints:

• 1 <= n <= 231 - 1

## Solutions

• class Solution {
public boolean hasAlternatingBits(int n) {
n ^= (n >> 1);
return (n & (n + 1)) == 0;
}
}

• class Solution {
public:
bool hasAlternatingBits(int n) {
n ^= (n >> 1);
return (n & ((long) n + 1)) == 0;
}
};

• class Solution:
def hasAlternatingBits(self, n: int) -> bool:
n ^= n >> 1
return (n & (n + 1)) == 0


• func hasAlternatingBits(n int) bool {
n ^= (n >> 1)
return (n & (n + 1)) == 0
}

• impl Solution {
pub fn has_alternating_bits(n: i32) -> bool {
let t = n ^ (n >> 1);
(t & (t + 1)) == 0
}
}