Skip to content

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;
};

Released under the MIT license