给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。

示例 1:

输入: 5
输出: True
解释:
5的二进制数是: 101

示例 2:

输入: 7
输出: False
解释:
7的二进制数是: 111

示例 3:

输入: 11
输出: False
解释:
11的二进制数是: 1011

 示例 4:

输入: 10
输出: True
解释:
10的二进制数是: 1010

思路:

将输入的n转换成二进制字符串,循环比较当前的字符是否与上一个相等,若相等,则返回false。

/**
 * @param {number} n
 * @return {boolean}
 */
var hasAlternatingBits = function(n) {
  var binary = n.toString(2);  // n的二进制数
  var currentNum = binary[0];
  for (var i = 1, l = binary.length; i < l; i++) {
    if (binary[i] === currentNum) {
      return false;
    } else {
      currentNum = binary[i];
    }
  }
  return true;
};