Volteos mínimos para eliminar cualquier 3 0 o 1 consecutivo en una string binaria dada

Dada una string binaria S que consta de N caracteres, la tarea es encontrar el número mínimo de vueltas necesarias para que no existan tres mismos caracteres consecutivos.

Ejemplos:

Entrada: S = “1100011”
Salida: 1
Explicación:
Voltear el carácter en el índice 3 modifica la string S “1101011” que no tiene tres caracteres iguales consecutivos. Por lo tanto, el número mínimo de lanzamientos necesarios es 1.

Entrada: S = “0001111101”
Salida: 2

Enfoque: el problema dado se puede resolver considerando cada tres caracteres consecutivos y, si son iguales, entonces aumente la cantidad de volteos requeridos, ya que se necesita voltear uno de los tres caracteres. Siga los pasos a continuación para resolver el problema:

  • Inicialice la variable, digamos contar como 0 que almacena la cantidad mínima de vueltas requeridas.
  • Si el tamaño de la string es menor que igual a 2, devuelve 0 ya que no hay necesidad de voltear.
  • Iterar sobre el rango [0, N – 2) usando la variable i y realizar los siguientes pasos:
    • Si el carácter en los índices i , (i + 1) y (i + 2) son los mismos, aumente el valor de count en 1 y el valor de i en 3 .
    • De lo contrario, incrementa el valor de i en 1 .
  • Después de realizar los pasos anteriores, imprima el valor de conteo como resultado.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the minimum number
// of flips to make all three pairs of
// consecutive characters different
int minFlips(string str)
{
    // Stores resultant count of pairs
    int count = 0;
 
    // Base Case
    if (str.size() <= 2) {
        return 0;
    }
 
    // Iterate over the range [0, N - 2]
    for (int i = 0; i < str.size() - 2;) {
 
        // If the consecutive 3 numbers
        // are the same then increment
        // the count and the counter
        if (str[i] == str[i + 1]
            && str[i + 2] == str[i + 1]) {
            i = i + 3;
            count++;
        }
        else {
            i++;
        }
    }
 
    // Return the answer
    return count;
}
 
// Driver Code
int main()
{
    string S = "0011101";
    cout << minFlips(S);
 
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
class GFG
{
 
// Function to find the minimum number
// of flips to make all three pairs of
// consecutive characters different
static int minFlips(String str)
{
    // Stores resultant count of pairs
    int count = 0;
   
    // Base Case
    if (str.length() <= 2) {
        return 0;
    }
   
    // Iterate over the range [0, N - 2]
    for (int i = 0; i < str.length() - 2😉 {
   
        // If the consecutive 3 numbers
        // are the same then increment
        // the count and the counter
        if (str.charAt(i) == str.charAt(i+1)
            && str.charAt(i+2) == str.charAt(i+1)) {
            i = i + 3;
            count++;
        }
        else {
            i++;
        }
    }
   
    // Return the answer
    return count;
}
   
// Driver Code
public static void main(String[] args)
{
     String S = "0011101";
   System.out.println(minFlips(S));
}
}
 
// This code is contributed by dwivediyash

Python3

# python 3 program for the above approach
#
# Function to find the minimum number
# of flips to make all three pairs of
# consecutive characters different
def minFlips(st):
 
    # Stores resultant count of pairs
    count = 0
 
    # Base Case
    if (len(st) <= 2):
        return 0
 
    # Iterate over the range [0, N - 2]
    for i in range(len(st) - 2):
 
        # If the consecutive 3 numbers
        # are the same then increment
        # the count and the counter
        if (st[i] == st[i + 1]
                and st[i + 2] == st[i + 1]):
            i = i + 3
            count += 1
 
        else:
            i += 1
 
    # Return the answer
    return count
 
# Driver Code
if __name__ == "__main__":
 
    S = "0011101"
    print(minFlips(S))
 
    # This code is contributed by ukasp.

Javascript

  <script>
        // JavaScript Program to implement
        // the above approach
 
 
        // Function to find the minimum number
        // of flips to make all three pairs of
        // consecutive characters different
        function minFlips(str) {
            // Stores resultant count of pairs
            let count = 0;
 
            // Base Case
            if (str.length <= 2) {
                return 0;
            }
 
            // Iterate over the range [0, N - 2]
            for (let i = 0; i < str.length - 2;) {
 
                // If the consecutive 3 numbers
                // are the same then increment
                // the count and the counter
                if (str[i] == str[i + 1]
                    && str[i + 2] == str[i + 1]) {
                    i = i + 3;
                    count++;
                }
                else {
                    i++;
                }
            }
 
            // Return the answer
            return count;
        }
 
        // Driver Code
 
        let S = "0011101";
        document.write(minFlips(S));
 
// This code is contributed by Potta Lokesh
    </script>

C#

// C# program for the above approach
using System;
 
 
public class GFG
{
 
// Function to find the minimum number
// of flips to make all three pairs of
// consecutive characters different
static int minFlips(string str)
{
    // Stores resultant count of pairs
    int count = 0;
   
    // Base Case
    if (str.Length <= 2) {
        return 0;
    }
   
    // Iterate over the range [0, N - 2]
    for (int i = 0; i < str.Length - 2;) {
   
        // If the consecutive 3 numbers
        // are the same then increment
        // the count and the counter
        if (str[i] == str[i+1]
            && str[i+2] == str[i+1]) {
            i = i + 3;
            count++;
        }
        else {
            i++;
        }
    }
   
    // Return the answer
    return count;
}
   
// Driver Code
public static void Main(string[] args)
{
     string S = "0011101";
     Console.WriteLine(minFlips(S));
}
}
 
// This code is contributed by AnkThon
Producción: 

1

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por Kdheeraj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *