VOOZH about

URL: https://www.geeksforgeeks.org/dsa/maximum-0s-two-immediate-1s-binary-representation/

⇱ Maximum 0's between two immediate 1's in binary representation - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Maximum 0's between two immediate 1's in binary representation

Last Updated : 23 Jul, 2025

Given a number n, the task is to find the maximum 0's between two immediate 1's in binary representation of given n. Return -1 if binary representation contains less than two 1's.

Examples : 

Input : n = 47
Output: 1
// binary of n = 47 is 101111

Input : n = 549
Output: 3
// binary of n = 549 is 1000100101

Input : n = 1030
Output: 7
// binary of n = 1030 is 10000000110

Input : n = 8
Output: -1
// There is only one 1 in binary representation
// of 8.

The idea to solve this problem is to use shift operator. We just need to find the position of two immediate 1's in binary representation of n and maximize the difference of these position. 

  • Return -1 if number is 0 or is a power of 2. In these cases there are less than two 1's in binary representation.
  • Initialize variable prev with position of first right most 1, it basically stores the position of previously seen 1.
  • Now take another variable cur which stores the position of immediate 1 just after prev.
  • Now take difference of cur - prev - 1, it will be the number of 0's between to immediate 1's and compare it with previous max value of 0's and update prev i.e; prev=cur for next iteration.
  • Use auxiliary variable setBit, which scans all bits of n and helps to detect if current bits is 0 or 1.
  • Initially check if N is 0 or power of 2.

Below is the implementation of the above idea :

Output: 

3

Time Complexity: O(1), because it is taking constant time irrespective of the input n.

Auxiliary Space: O(1)
 

Comment
Article Tags: