693. 交替位二进制数
题目来源:693. 交替位二进制数
2022.03.28 每日一题
LeetCode 题解持续更新中Github仓库地址 CSDN博客地址
今天的题目就很简单了,直接使用位运算就可以了
首先如果原来的的数字是 1010
交替的,那么我对其进行>>1
操作,是其01
错开,再将彼此异或
根据异或的规则,同 0 异 1
可以知道,如果数字的二进制是1010
交替的,那么异或以后就会变成全1
的形式,记录这个数字为a
,这时,a
的二进制是全一的状态,再与a+1
进行与操作,如果等于了0
,就说明是符合题意的,反之就不满足题意
class Solution {
public:
bool hasAlternatingBits(int n) {
int a = n ^ (n >> 1);
return (a & (a + 1)) == 0;
}
};
693. 交替位二进制数
题目来源:693. 交替位二进制数
2022.03.28 每日一题
class Solution {
public boolean hasAlternatingBits(int n) {
int a = n ^ (n >> 1);
return (a & (a + 1)) == 0;
}
}