Binary Number With Alternating Bits Problem


Description

LeetCode Problem 693.

Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.

Example 1:

1
2
3
Input: n = 5
Output: true
Explanation: The binary representation of 5 is: 101

Example 2:

1
2
3
Input: n = 7
Output: false
Explanation: The binary representation of 7 is: 111.

Example 3:

1
2
3
Input: n = 11
Output: false
Explanation: The binary representation of 11 is: 1011.

Example 4:

1
2
3
Input: n = 10
Output: true
Explanation: The binary representation of 10 is: 1010.

Example 5:

1
2
Input: n = 3
Output: false

Constraints:

  • 1 <= n <= 2^31 - 1


Sample C++ Code

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
    bool hasAlternatingBits(int n) {
        int d = n & 1;
        while ((n & 1) == d) {
            d = 1 - d;
            n >>= 1;
        }
        return n == 0;
    }
};




Related Posts

Score After Flipping Matrix Problem

LeetCode 861. You are given an m x n binary...

Chalkboard Xor Game Problem

LeetCode 810. You are given an array of integers nums...

Bitwise ORs Of Subarrays Problem

LeetCode 898. We have an array arr of non-negative integers....

Binary Gap Problem

LeetCode 868. Given a positive integer n, find and return...

K-Th Symbol In Grammar Problem

LeetCode 779. We build a table of n rows (1-indexed)....