# Remove one bit from a binary number to get maximum value

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:110Output: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:1001Output: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)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.