题目:交替位二进制数
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。
示例
- 示例 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去遍历看前后是否相等,但是后来发现直接在二进制转化中判断根据方便。