## 题目描述

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

Example 1:

``````Input: 5
Output: True
Explanation:
The binary representation of 5 is: 101``````

Example 2:

``````Input: 7
Output: False
Explanation:
The binary representation of 7 is: 111.``````

Example 3:

``````Input: 11
Output: False
Explanation:
The binary representation of 11 is: 1011.``````

Example 4:

``````Input: 10
Output: True
Explanation:
The binary representation of 10 is: 1010.``````

## 解法一

### Python

``````class Solution:
def hasAlternatingBits(self, n):
"""
:type n: int
:rtype: bool
"""
last = n & 1
while n != 0 and n & 1 == last:
last = 1 - last
n >>= 1
return n == 0``````

### Java

``````class Solution {
public boolean hasAlternatingBits(int n) {
int last = n & 1;
while (n != 0 && (n & 1) == last) {
last = 1 - last;
n >>= 1;
}
return n == 0;
}
}``````

### C++

``````class Solution {
public:
bool hasAlternatingBits(int n) {
bool last = n & 1;
while (n != 0 && (n & 1) == last) {
last = 1 - last;
n >>= 1;
}
return n == 0;
}
};``````