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
Solution: Bit Manipulation
- Time complexity: O(logn)
- Space complexity: O(1)
JavaScript
js
/**
* @param {number} n
* @return {boolean}
*/
const hasAlternatingBits = function (n) {
let prev = -1;
while (n) {
const current = n & 1;
if (current === prev) return false;
n >>= 1;
prev = current;
}
return true;
};