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++
// C++ program to find minimum number
// of characters to be removed to make
// a string alternate.
#include <bits/stdc++.h>
using namespace std;
// Returns count of minimum characters to
// be removed to make s alternate.
void countToMake0lternate(const string& s)
{
int result = 0;
for (int i = 0; i < (s.length() - 1); i++)
// if two alternating characters
// of string are same
if (s[i] == s[i + 1])
result++; // then need to
// delete a character
return result;
}
// Driver code
int main()
{
cout << countToMake0lternate("000111") << endl;
cout << countToMake0lternate("11111") << endl;
cout << countToMake0lternate("01010101") << endl;
return 0;
}
Java
// Java program to find minimum number
// of characters to be removed to make
// a string alternate.
import java.io.*;
public class GFG {
// Returns count of minimum characters to
// be removed to make s alternate.
static int countToMake0lternate(String s)
{
int result = 0;
for (int i = 0; i < (s.length() - 1); i++)
// if two alternating characters
// of string are same
if (s.charAt(i) == s.charAt(i + 1))
result++; // then need to
// delete a character
return result;
}
// Driver code
static public void main(String[] args)
{
System.out.println(countToMake0lternate("000111"));
System.out.println(countToMake0lternate("11111"));
System.out.println(countToMake0lternate("01010101"));
}
}
// This code is contributed by vt_m.
Python 3
# Python 3 program to find minimum number
# of characters to be removed to make
# a string alternate.
# Returns count of minimum characters
# to be removed to make s alternate.
def countToMake0lternate(s):
result = 0
for i in range(len(s) - 1):
# if two alternating characters
# of string are same
if (s[i] == s[i + 1]):
result += 1 # then need to
# delete a character
return result
# Driver code
if __name__ == "__main__":
print(countToMake0lternate("000111"))
print(countToMake0lternate("11111"))
print(countToMake0lternate("01010101"))
# This code is contributed by ita_c
C#
// C# program to find minimum number
// of characters to be removed to make
// a string alternate.
using System;
public class GFG {
// Returns count of minimum characters to
// be removed to make s alternate.
static int countToMake0lternate(string s)
{
int result = 0;
for (int i = 0; i < (s.Length - 1); i++)
// if two alternating characters
// of string are same
if (s[i] == s[i + 1])
result++; // then need to
// delete a character
return result;
}
// Driver code
static public void Main()
{
Console.WriteLine(countToMake0lternate("000111"));
Console.WriteLine(countToMake0lternate("11111"));
Console.WriteLine(countToMake0lternate("01010101"));
}
}
//
PHP
<?php
// PHP program to find minimum number
// of characters to be removed to make
// a string alternate.
// Returns count of minimum characters
// to be removed to make s alternate.
function countToMake0lternate($s)
{
$result = 0;
for ($i = 0; $i < (strlen($s) - 1); $i++)
// if two alternating characters
// of string are same
if ($s[$i] == $s[$i + 1])
// then need to
// delete a character
$result++;
return $result;
}
// Driver code
echo countToMake0lternate("000111"),"\n" ;
echo countToMake0lternate("11111"),"\n" ;
echo countToMake0lternate("01010101") ;
// This code is contributed by nitin mittal.
?>
JavaScript
<script>
// Javascript program to find minimum number
// of characters to be removed to make
// a string alternate.
// Returns count of minimum characters to
// be removed to make s alternate.
function countToMake0lternate(s)
{
let result = 0;
for (let i = 0; i < (s.length - 1); i++)
// if two alternating characters
// of string are same
if (s[i] == s[i+1])
result++; // then need to
// delete a character
return result;
}
// Driver code
document.write(countToMake0lternate("000111")+"<br>");
document.write(countToMake0lternate("11111")+"<br>");
document.write(countToMake0lternate("01010101")+"<br>");
// This code is contributed by rag2127
</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.