Given a binary string **str** of length **N**, the task is to find the longest sub-string divisible by **2**. If no such sub-string exists then print **-1**.

**Examples:**

Input:str = “11100011”Output:111000

Largest sub-string divisible by 2 is “111000”.

Input:str = “1111”Output:-1

There is no sub-string of the given string

which is divisible by 2.

**Naive approach:** A naive approach will be to generate all such sub-strings and check if they are divisible by 2. The time complexity of this approach will be O(N^{3}).

**Better approach:** A straight forward approach will be to remove characters from the end of the string while the last character is **1**. The moment a **0** is encountered, the current string will be divisible by **2** as it ends at a **0**. The time complexity of this approach will be O(N).

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to return the largest` `// substring divisible by 2` `string largestSubStr(string s)` `{` ` ` `// While the last character of` ` ` `// the string is '1', pop it` ` ` `while` `(s.size() and s[s.size() - 1] == ` `'1'` `)` ` ` `s.pop_back();` ` ` ` ` `// If the original string had no '0'` ` ` `if` `(s.size() == 0)` ` ` `return` `"-1"` `;` ` ` `else` ` ` `return` `s;` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `string s = ` `"11001"` `;` ` ` ` ` `cout << largestSubStr(s);` ` ` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach ` `class` `GFG` `{` ` ` ` ` `// Function to return the largest ` ` ` `// substring divisible by 2 ` ` ` `static` `String largestSubStr(String s) ` ` ` `{ ` ` ` `// While the last character of ` ` ` `// the string is '1', pop it ` ` ` `while` `(s.length() != ` `0` `&& ` ` ` `s.charAt(s.length() - ` `1` `) == ` `'1'` `) ` ` ` `s = s.substring(` `0` `, s.length() - ` `1` `); ` ` ` ` ` `// If the original string had no '0' ` ` ` `if` `(s.length() == ` `0` `) ` ` ` `return` `"-1"` `; ` ` ` `else` ` ` `return` `s; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main (String[] args)` ` ` `{ ` ` ` `String s = ` `"11001"` `; ` ` ` ` ` `System.out.println(largestSubStr(s)); ` ` ` `} ` `}` ` ` `// This code is contributed by AnkitRai01` |

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to return the largest ` `# substring divisible by 2 ` `def` `largestSubStr(s) : ` ` ` ` ` `# While the last character of ` ` ` `# the string is '1', pop it ` ` ` `while` `(` `len` `(s) ` `and` `s[` `len` `(s) ` `-` `1` `] ` `=` `=` `'1'` `) :` ` ` `s ` `=` `s[:` `len` `(s) ` `-` `1` `]; ` ` ` ` ` `# If the original string had no '0' ` ` ` `if` `(` `len` `(s) ` `=` `=` `0` `) :` ` ` `return` `"-1"` `; ` ` ` `else` `:` ` ` `return` `s; ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` ` ` `s ` `=` `"11001"` `; ` ` ` ` ` `print` `(largestSubStr(s)); ` ` ` `# This code is contributed by AnkitRai01` |

## C#

`// C# implementation of the approach ` `using` `System;` ` ` `class` `GFG ` `{ ` ` ` ` ` `// Function to return the largest ` ` ` `// substring divisible by 2 ` ` ` `static` `string` `largestSubStr(` `string` `s) ` ` ` `{ ` ` ` `// While the last character of ` ` ` `// the string is '1', pop it ` ` ` `while` `(s.Length != 0 && ` ` ` `s[s.Length - 1] == ` `'1'` `) ` ` ` `s = s.Substring(0, s.Length - 1); ` ` ` ` ` `// If the original string had no '0' ` ` ` `if` `(s.Length == 0) ` ` ` `return` `"-1"` `; ` ` ` `else` ` ` `return` `s; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main () ` ` ` `{ ` ` ` `string` `s = ` `"11001"` `; ` ` ` ` ` `Console.WriteLine(largestSubStr(s)); ` ` ` `} ` `} ` ` ` `// This code is contributed by AnkitRai01 ` |

**Output:**

1100

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 industry experts, please refer **Geeks Classes Live** and **Geeks Classes Live USA**