Check if a number has bits in alternate pattern - Set 1 in C++



Let us consider we have an integer n. The problem is to check, whether this integer has alternate patterns in its binary equivalent or not. The alternate pattern means 101010â€Ļ.

The approach is like: check each digit using binary equivalent, and if two consecutive are same, return false, otherwise true.

Example

#include <iostream>
using namespace std;
bool hasAlternatePattern(unsigned int n) {
   int previous = n % 2;
   n = n/2;
   while (n > 0) {
      int current = n % 2;
      if (current == previous) // If current bit is same as previous
      return false;
      previous = current;
      n = n / 2;
   }
   return true;
}
int main() {
   unsigned int number = 42;
   if(hasAlternatePattern(number))
      cout << "Has alternating pattern";
   else
      cout << "Has no alternating pattern";
}

Output

Has alternating pattern
Updated on: 2019-10-21T10:08:52+05:30

279 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements