## Issue

I want to print all the substrings to be printed and everysubstring should have equal number of zeros and ones.I have strated the loop where i points to the index and initially number of zeros and one is equal to 0 and loop runs till both of them becomes equal and i push that in the vector. But My code is not running good . I am given enough time to figure out what could be the error but am not able to find.

Output

```
0 1 0 0 1 1 0 1 0 1
```

Expected Output

```
01 0011 01 01
```

I am not able figure out the error , Please help me with this.

```
#include <iostream>
#include <vector>
using namespace std;
vector<string> maxSubStr(string s, int n)
{
vector<string> v;
for (int i = 0; i < n; i++)
{
int ones = 0;
int zeros = 0;
int j = 0;
for (j = i; zeros != ones && j<n; j++)
{
if (s[j] == '0')
{
zeros++;
}
else
{
ones++;
}
}
if (zeros == ones)
{
int size = j - i;
v.push_back(s.substr(i, size));
}
if(j==n){
break;
}
i = j ;
}
return v;
}
int main()
{
string str = "0100110101";
int n = str.length();
vector<string> v;
v = maxSubStr(str, n);
vector<string>::iterator it;
for (it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
return 0;
}
```

## Solution

There are a number of little mistakes in your code. You should learn to use a debugger to step through it, the errors would become evident.

In the loop over `i`

it is useless to set the value of `j`

just before setting in again in the loop over `j`

.Then, the loop should be limited by `j<n`

to prevent an access past end of string. Next, you do not want to test `s[i]`

but `s[j]`

. Finally, the test `zeros == ones`

should be in the `j`

loop and should set `i`

to the next position, that is `j + 1`

. Code could become:

```
vector<string> maxSubStr(string s)
{
vector<string> v;
int n = s.size();
for (int i = 0; i < n; i++)
{
int ones = 0;
int zeros = 0;
int j = 0;
for (j = i; j < n; j++)
{
if (s[j] == '0')
{
zeros++;
}
else
{
ones++;
}
if (zeros == ones)
{
v.push_back(s.substr(i, j + 1 - i));
i = j;
break;
}
}
}
return v;
}
```

Answered By – Serge Ballesta

Answer Checked By – Jay B. (BugsFixing Admin)