leetcode-693. 交替位二进制数

144 阅读1分钟

前言

记录下leetcode每日一题

题目描述

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例1

输入: n = 11
输出: false
解释: 11 的二进制表示是:1011.

示例2

输入: n = 5
输出: true
解释: 5 的二进制表示是:101

示例3

输入: n = 7
输出: false
解释: 7 的二进制表示是:111.

提示

  • 1 <= n <= 231 - 1

思路

  1. 可以对这个数字进行二进制转换
  2. 每次转换后的值和之前的值判断,如果相同就返回false
  3. 否则讲prev变成当前值,进行下一次运算
  4. 循环结束 返回true

代码

/**
 * @param {number} n
 * @return {boolean}
 */
var hasAlternatingBits = function (n) {
    // 先讲数字转换成二进制
    let prev
    while (n > 0) {
        let current = n % 2
        if (prev == current) {
            return false
        } else {
            prev = current
        }
        n = parseInt(n / 2)
    }
    return true
};

最后

每天进步一点点