给定一个正整数,检查它的二进制表示是否总是0,1交替出现,换句话说,就是二进制表示中相邻两位的数字永不相同。
示例:
输入:n = 5
输出:true
解释:5 的二进制表示是:101
输入:n = 7
输出:false
解释:7 的二进制表示是:111.
输入:n = 11
输出:false
解释:11 的二进制表示是:1011.
提示:
1 <= n <= 231 - 1
思路:找出数的二进制的每一位,和前一位进行比较,相同就返回false,不相同就返回true。
class Solution {
public:
bool hasAlternatingBits(int n) {
int val = -1;
while(n){
if(val == n % 2) return false;
else {
val = n % 2;
n = n / 2;
}
}
return true;
}
};