交替位二进制数

字符串

转为字符串后循环。

function hasAlternatingBits(n: number): boolean {
  const str = n.toString(2)
  for (let i = 0; i < str.length - 1; i++) {
    if (str[i] === str[i + 1]) {
      return false
    }
  }
  return true
}

位运算

每次与 1 做与运算,然后右移一位。

function hasAlternatingBits(n: number): boolean {
  let temp = -1
  while (n) {
    if ((n & 1) === temp) {
      return false
    }
    temp = n & 1
    n >>= 1
  }
  return true
}