Compruebe si una string binaria contiene A pares de 0 y B 0 independientes o no

Dada una string binaria S y dos números enteros positivos A y B , la tarea es verificar si la string consta de un par independiente de 0 adyacentes y un número independiente de 0 B en la string binaria o no. Si se encuentra que es cierto, escriba «Sí» . De lo contrario, escriba “No” .

Ejemplos:

Entrada: S = “10100”, A = 1, B = 1
Salida:
Explicación:
La string dada consta de A (=1) pares de 0 adyacentes y B (=1) número independiente de 0.

Entrada: S = “0101010”, A = 1, B = 2
Salida: No
Explicación:
La string dada no tiene pares de 0 adyacentes.

 

Enfoque: siga los pasos a continuación para resolver el problema:

  • Recorra la string S dada usando una variable, digamos i, y realice los siguientes pasos:
    • Si el carácter actual es ‘0’ y su carácter adyacente es ‘0’ y A es al menos 1 , entonces disminuya A en 1 y aumente el puntero i en 1 .
    • De lo contrario, si el carácter actual es ‘0’ y B es al menos 1 , disminuya B en 1 .
  • Después de completar los pasos anteriores, si el valor de A y B es 0 , imprima » Sí» . De lo contrario, escriba “No” .

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 check if there exists
// A adjacent 0s and B 0s in the
// given binary string or not
void parking(string S, int a, int b)
{
    // Traverse the string
    for (int i = 0; i < S.size(); i++) {
        if (S[i] == '0') {
            // If there are adjacent
            // 0s and a is positive
            if (i + 1 < S.size()
                && S[i + 1] == '0'
                && a > 0) {
 
                i++;
                a--;
            }
 
            // If b is positive
            else if (b > 0) {
                b--;
            }
        }
    }
 
    // Condition for Yes
    if (a == 0 && b == 0) {
        cout << "Yes\n";
    }
    else
        cout << "No\n";
}
 
// Driver Code
int main()
{
    string S = "10100";
    int A = 1, B = 1;
    parking(S, A, B);
}

Java

// Java program for the above approach
import java.util.*;
 
class GFG{
 
// Function to check if there exists
// A adjacent 0s and B 0s in the
// given binary string or not
static void parking(String S, int a, int b)
{
     
    // Traverse the string
    for(int i = 0; i < S.length(); i++)
    {
        if (S.charAt(i) == '0')
        {
             
            // If there are adjacent
            // 0s and a is positive
            if (i + 1 < S.length() &&
                S.charAt(i + 1) == '0' && a > 0)
            {
                i++;
                a--;
            }
 
            // If b is positive
            else if (b > 0)
            {
                b--;
            }
        }
    }
 
    // Condition for Yes
    if (a == 0 && b == 0)
    {
        System.out.print("Yes\n");
    }
    else
        System.out.print("No\n");
}
 
// Driver Code
public static void main (String[] args)
{
     
    // Given string
    String S = "10100";
    int A = 1, B = 1;
     
    parking(S, A, B);
}
}
 
// This code is contributed by sanjoy_62

Python3

# Python3 program for the above approach
 
# Function to check if there exists
# A adjacent 0s and B 0s in the
# given binary string or not
def parking(S, a, b):
     
    # Traverse the string
    for i in range(len(S)):
        if (S[i] == '0'):
             
            # If there are adjacent
            # 0s and a is positive
            if (i + 1 < len(S) and
              S[i + 1] == '0' and a > 0):
                i += 1
                a -= 1
 
            # If b is positive
            elif (b > 0):
                b -= 1
 
    # Condition for Yes
    if (a == 0 and b == 0):
        print("Yes")
    else:
        print("No")
 
# Driver Code
if __name__ == '__main__':
     
    S = "10100"
    A = 1
    B = 1
     
    parking(S, A, B)
     
# This code is contributed by SURENDRA_GANGWAR

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to check if there exists
// A adjacent 0s and B 0s in the
// given binary string or not
static void parking(string S, int a, int b)
{
     
    // Traverse the string
    for(int i = 0; i < S.Length; i++)
    {
        if (S[i] == '0')
        {
             
            // If there are adjacent
            // 0s and a is positive
            if (i + 1 < S.Length &&
                 S[i + 1] == '0' && a > 0)
            {
                i++;
                a--;
            }
 
            // If b is positive
            else if (b > 0)
            {
                b--;
            }
        }
    }
 
    // Condition for Yes
    if (a == 0 && b == 0)
    {
        Console.WriteLine("Yes");
    }
    else
         Console.WriteLine("No");
}
 
// Driver Code
public static void Main (string[] args)
{
     
    // Given string
    string S = "10100";
    int A = 1, B = 1;
     
    parking(S, A, B);
}
}
 
// This code is contributed by AnkThon

Javascript

<script>
// Function to check if there exists
// A adjacent 0s and B 0s in the
// given binary string or not
function parking( S, a, b)
{
    // Traverse the string
    for (var i = 0; i < S.length; i++) {
        if (S[i] == '0') {
            // If there are adjacent
            // 0s and a is positive
            if (i + 1 < S.length
                && S[i + 1] == '0'
                && a > 0) {
 
                i++;
                a--;
            }
 
            // If b is positive
            else if (b > 0) {
                b--;
            }
        }
    }
 
    // Condition for Yes
    if (a == 0 && b == 0) {
        document.write("Yes"+"<br>");
    }
    else
        document.write( "No"+"<br>");
}
 
var S = "10100";
var A = 1, B = 1;
parking(S, A, B);
 
//This code is contributed by SoumikMondal
</script>
Producción: 

Yes

 

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

Publicación traducida automáticamente

Artículo escrito por single__loop 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 *