题目:
Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.
Example 1:
Input: 5 Output: True Explanation: The binary representation of 5 is: 101
Example 2:
Input: 7 Output: False Explanation: The binary representation of 7 is: 111.
Example 3:
Input: 11 Output: False Explanation: The binary representation of 11 is: 1011.
Example 4:
Input: 10 Output: True Explanation: The binary representation of 10 is: 1010.
思路:
练手题目。我们每次记录下n的最右边位上的值,然后再看其次右边位上的值,如果一样,就返回false;如果所有相邻位都不一样,就返回true。
代码:
class Solution {
public:
bool hasAlternatingBits(int n) {
int pre = n & 1;
n = n >> 1;
while (n > 0) {
if ((n & 1) == pre) {
return false;
}
pre = 1 - pre;
n = n >> 1;
}
return true;
}
};