
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Maximum Difference of Zeros and Ones in Binary String (O(N) Time) in C++
Given the task is to find a sub-string from a given binary string and then the maximum difference between the number of zeroes and the ones.
Let’s now understand what we have to do using an example −
Input
str = “10010110”
Output
2
Explanation
In the sub-array from the position 1 to 4 (“0010”), the difference between the zeros and ones = 3 – 1 = 2 which is the maximum that can be found.
Input
str = “00000”
Output
5
Approach used in the below program as follows
In main() function create a string str to store the binary string. Also declare an array int arr[str.length()+1];
Set all elements of arr[] = 0 by using memset(arr,0,sizeof(arr));
Loop from j = 1 till j<= str.length()
Check if(memset(arr,0,sizeof(arr)), if so then put arr[j]=max(arr[j-1]-1,-1);
Else put arr[j]=max(arr[j-1]+1,1);
Outside the loop print the maximum number by using *max_element(arr+1, arr+str.length()+1);
Example
#include<bits/stdc++.h> using namespace std; int main(){ string str = "10010110"; int arr[str.length()+1]; memset(arr,0,sizeof(arr)); for(int j=1;j<=str.length();j++){ if(str[j-1]=='1') arr[j]=max(arr[j-1]-1,-1); else arr[j]=max(arr[j-1]+1,1); } cout<<*max_element(arr+1,arr+str.length()+1); return 0; }
Output
2