力扣一日一练(25)——交替位二进制数

148 阅读1分钟

题目:交替位二进制数

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

 

示例

  • 示例 1:

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

  • 示例 2:

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

  • 示例 3:

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

  •  示例 4:

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

 

使用JavaScript语言

/**
 * @param {number} n
 * @return {boolean}
 */
var hasAlternatingBits = function(n) {
    // var arr = [];
    // /**得到n的二进制数 */ 
    // while(n>0){
    //     var temp = n%2;
    //     n = Math.floor(n/2);
    //     if(temp==1){
    //         arr.unshift(1);
    //     }else{
    //         arr.unshift(0);
    //     }
    // }
    // var bool = true;
    // arr.forEach(function(item,index){
    //     if(item == arr[index+1]){
    //         console.log(item+":"+arr[index+1])
    //         bool = false;
    //     }		
    // })
    // return bool;
/************************************************ */
    while(n>0){
        if(n%2 == Math.floor(n/2)%2){         
            return false;
        }
        n = Math.floor(n/2);
    }
    return true;
};

 

分析

这道题目可以有数字转化为二进制数求,一开始我将数字转化为二进制数组然后在数组中forEach去遍历看前后是否相等,但是后来发现直接在二进制转化中判断根据方便。

 

题目链接

leetcode-cn.com/problems/bi…