LeetCode 693: Binary Number with Alternating Bits
题目描述
判断一个整数的二进制表示是否会出现连续的 0 和 1。
解题思路
对于 1010 这种位级表示的数,把它向右移动 1 位得到 101,这两个数每个位都不同,因此异或得到的结果为1111。
AC代码
class Solution {
public:
bool hasAlternatingBits(int n) {
int a = (n ^ (n >> 1));
return (a&(a + 1)) == 0; //判断a的二进制是否全为1
}
};
本文详细解析了LeetCode693题目的解题思路及AC代码实现,通过位运算判断一个整数的二进制表示是否具有交替的0和1,提供了清晰的代码示例。

230

被折叠的 条评论
为什么被折叠?



