前言
记录下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
思路
- 可以对这个数字进行二进制转换
- 每次转换后的值和之前的值判断,如果相同就返回false
- 否则讲prev变成当前值,进行下一次运算
- 循环结束 返回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
};
最后
每天进步一点点