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: 21-Oct-2019

211 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements