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 <= 2^31 - 1
【C++】
class Solution {
public:
bool hasAlternatingBits(int n) {
int prev = n % 2;
n /= 2;
while (n > 0) {
int curr = n % 2;
if (prev == curr) {return false;}
prev = curr;
n /= 2;
}
return true;
}
};
【Java】
class Solution {
public boolean hasAlternatingBits(int n) {
int prev = n % 2;
n /= 2;
while (n > 0) {
int curr = n % 2;
if (prev == curr) {return false;}
prev = curr;
n /= 2;
}
return true;
}
}