给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。
输入: 5 输出: True 解释: 5的二进制数是: 101
输入: 7 Output: False 解释: 7的二进制数是: 111
输入: 11 输出: False 解释: 11的二进制数是: 1011
输入: 10 输出: True 解释: 10的二进制数是: 1010
impl Solution {
pub fn has_alternating_bits(n: i32) -> bool {
let mut n = n;
let mut pre = n & 1;
while n != 0 {
n >>= 1;
if pre == n & 1 {
return false;
}
pre = n & 1;
}
true
}
}
impl Solution {
pub fn has_alternating_bits(n: i32) -> bool {
let mut i = 1;
while i > 0 && i < n {
match i % 2 {
1 => i = 2 * i,
_ => i = 2 * i + 1,
};
}
i == n
}
}