Minimum number of characters to be removed to make a binary string alternate
Last Updated :
11 Sep, 2023
Given a binary string, the task is to find minimum number of characters to be removed from it so that it becomes alternate. A binary string is alternate if there are no two consecutive 0s or 1s.
Examples :
Input : s = "000111"
Output : 4
We need to delete two 0s and
two 1s to make string alternate.
Input : s = "0000"
Output : 3
We need to delete three characters
to make it alternate.
Input : s = "11111"
Output : 4
Input : s = "01010101"
Output : 0
Input : s = "101010"
Output : 0
This problem has below simple solution.
We traverse string from left to right and compare current character with next character.
- If current and next are different then no need to perform deletion.
- If current and next are same, we need to perform one delete operation to make them alternate.
Below is the implementation of above algorithm.
C++
#include <bits/stdc++.h>
using namespace std;
void countToMake0lternate( const string& s)
{
int result = 0;
for ( int i = 0; i < (s.length() - 1); i++)
if (s[i] == s[i + 1])
result++;
return result;
}
int main()
{
cout << countToMake0lternate( "000111" ) << endl;
cout << countToMake0lternate( "11111" ) << endl;
cout << countToMake0lternate( "01010101" ) << endl;
return 0;
}
|
Java
import java.io.*;
public class GFG {
static int countToMake0lternate(String s)
{
int result = 0 ;
for ( int i = 0 ; i < (s.length() - 1 ); i++)
if (s.charAt(i) == s.charAt(i + 1 ))
result++;
return result;
}
static public void main(String[] args)
{
System.out.println(countToMake0lternate( "000111" ));
System.out.println(countToMake0lternate( "11111" ));
System.out.println(countToMake0lternate( "01010101" ));
}
}
|
Python 3
def countToMake0lternate(s):
result = 0
for i in range ( len (s) - 1 ):
if (s[i] = = s[i + 1 ]):
result + = 1
return result
if __name__ = = "__main__" :
print (countToMake0lternate( "000111" ))
print (countToMake0lternate( "11111" ))
print (countToMake0lternate( "01010101" ))
|
C#
using System;
public class GFG {
static int countToMake0lternate( string s)
{
int result = 0;
for ( int i = 0; i < (s.Length - 1); i++)
if (s[i] == s[i + 1])
result++;
return result;
}
static public void Main()
{
Console.WriteLine(countToMake0lternate( "000111" ));
Console.WriteLine(countToMake0lternate( "11111" ));
Console.WriteLine(countToMake0lternate( "01010101" ));
}
}
|
PHP
<?php
function countToMake0lternate( $s )
{
$result = 0;
for ( $i = 0; $i < ( strlen ( $s ) - 1); $i ++)
if ( $s [ $i ] == $s [ $i + 1])
$result ++;
return $result ;
}
echo countToMake0lternate( "000111" ), "\n" ;
echo countToMake0lternate( "11111" ), "\n" ;
echo countToMake0lternate( "01010101" ) ;
?>
|
Javascript
<script>
function countToMake0lternate(s)
{
let result = 0;
for (let i = 0; i < (s.length - 1); i++)
if (s[i] == s[i+1])
result++;
return result;
}
document.write(countToMake0lternate( "000111" )+ "<br>" );
document.write(countToMake0lternate( "11111" )+ "<br>" );
document.write(countToMake0lternate( "01010101" )+ "<br>" );
</script>
|
Output:
4
4
0
Time Complexity : O(n) where n is number of characters in input string.
Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and Ravi Maurya.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...