题目地址:
https://leetcode.com/problems/binary-number-with-alternating-bits/
给定一个正整数 n n n,问其二进制表示里相邻两个数字是否都不一样。
直接检查相邻两位是否有一样的即可。代码如下:
public class Solution {
public boolean hasAlternatingBits(int n) {
int cur = n & 1;
n >>= 1;
while (n > 0) {
if (cur == (n & 1)) {
return false;
}
cur = n & 1;
n >>= 1;
}
return true;
}
}
时间复杂度 O ( log n ) O(\log n) O(logn),空间 O ( 1 ) O(1) O(1)。