693-交替位二进制数

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。

示例 1:

输入: 5
输出: True
解释: 5的二进制数是: 101

示例 2:

输入: 7
输出: False
解释: 7的二进制数是: 111

示例 3:

输入: 11
输出: False
解释: 11的二进制数是: 1011

示例 4:

输入: 10
输出: True
解释: 10的二进制数是: 1010 输出: True 解释: 5的二进制数是: 101

示例 2:

输入: 7 输出: Flse 解释: 7的二进制数是: 111

示例 3:

输入: 11 输出: False 解释: 11的二进制数是: 1011

示例 4:

输入: 10 输出: True 解释: 10的二进制数是: 1010

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public boolean hasAlternatingBits(int n) {
int last = n & 0b1;
n >>= 1;
while (n > 0) {
int tmp = n & 0b1;
if ((last ^ tmp) == 0)
return false;
n >>= 1;
last = tmp;
}
return true;
}
}