Given a binary number, the task is to remove exactly one bit from it such that, after it’s removal, the resultant binary number is greatest from all the options.
Examples:
Input: 110 Output: 11 As 110 = 6 in decimal, the option is to remove either 0 or 1. So the possible combinations are 10, 11 The max number is 11 = 3 in decimal. Input:1001 Output: 101
Approach:
- Traverse the binary number from left to right.
- Find the least redundant 0 bit, as this bit will have the least effect on the resultant binary number.
- Skip this bit, or remove it.
- The rest of the bits give the maximum value binary number.
Below is the implementation of the above approach:
Program:
C++
// C++ program to find next maximum binary number // with one bit removed #include <bits/stdc++.h> using namespace std;
// Function to find the maximum binary number int printMaxAfterRemoval(string s)
{ bool flag = false ;
int n = s.length();
// Traverse the binary number
for ( int i = 0; i < n; i++) {
// Try finding a 0 and skip it
if (s[i] == '0' && flag == false ) {
flag = true ;
continue ;
}
else
cout << s[i];
}
} // Driver code int main()
{ // Get the binary number
string s = "1001" ;
// Find the maximum binary number
printMaxAfterRemoval(s);
} |
Java
// Java program to find next maximum binary number // with one bit removed import java.io.*;
class GFG {
// Function to find the maximum binary number static int printMaxAfterRemoval(String s)
{ boolean flag = false ;
int n = s.length();
// Traverse the binary number
for ( int i = 0 ; i < n; i++) {
// Try finding a 0 and skip it
if (s.charAt(i) == '0' && flag == false ) {
flag = true ;
continue ;
}
else
System.out.print( s.charAt(i));
}
return 0 ;
} // Driver code public static void main (String[] args) {
// Get the binary number
String s = "1001" ;
// Find the maximum binary number
printMaxAfterRemoval(s);
}
} // This code is contributed by anuj_67.. |
Python3
# Python3 program to find next maximum # binary number with one bit removed # Function to find the maximum # binary number def printMaxAfterRemoval(s):
flag = False
n = len (s)
# Traverse the binary number
for i in range ( 0 , n):
# Try finding a 0 and skip it
if s[i] = = '0' and flag = = False :
flag = True
continue
else :
print (s[i], end = "")
# Driver code if __name__ = = "__main__" :
# Get the binary number
s = "1001"
# Find the maximum binary number
printMaxAfterRemoval(s)
# This code is contributed # by Rituraj Jain |
C#
// C# program to find next maximum // binary number with one bit removed using System;
class GFG
{ // Function to find the maximum // binary number static int printMaxAfterRemoval(String s)
{ bool flag = false ;
int n = s.Length;
// Traverse the binary number
for ( int i = 0; i < n; i++)
{
// Try finding a 0 and skip it
if (s[i] == '0' && flag == false )
{
flag = true ;
continue ;
}
else
Console.Write(s[i]);
}
return 0;
} // Driver Code static void Main()
{ // Get the binary number
String s = "1001" ;
// Find the maximum binary number
printMaxAfterRemoval(s);
} } // This code is contributed by Ryuga. |
PHP
<?php // PHP program to find next maximum // binary number with one bit removed // Function to find the maximum // binary number function printMaxAfterRemoval( $s )
{ $flag = false;
$n = strlen ( $s );
// Traverse the binary number
for ( $i = 0; $i < $n ; $i ++)
{
// Try finding a 0 and skip it
if ( $s [ $i ] == '0' && $flag == false)
{
$flag = true;
continue ;
}
else
echo $s [ $i ];
}
} // Driver code // Get the binary number $s = "1001" ;
// Find the maximum binary number printMaxAfterRemoval( $s );
// This code is contributed // by Akanksha Rai ?> |
Javascript
<script> // Javascript program to find next maximum
// binary number with one bit removed
// Function to find the maximum
// binary number
function printMaxAfterRemoval(s)
{
let flag = false ;
let n = s.length;
// Traverse the binary number
for (let i = 0; i < n; i++)
{
// Try finding a 0 and skip it
if (s[i] == '0' && flag == false )
{
flag = true ;
continue ;
}
else
document.write(s[i]);
}
return 0;
}
// Get the binary number
let s = "1001" ;
// Find the maximum binary number
printMaxAfterRemoval(s);
</script> |
Output:
101
Time Complexity: O(n)