Reemplazar ‘?’ para convertir una string dada en una string binaria con un recuento máximo de ‘0’ y «10»

Dada la string str , que consta de tres tipos diferentes de caracteres ‘0’ , ‘1’ y ‘?’ , la tarea es convertir la string dada en una string binaria reemplazando el ‘?’ caracteres con ‘0’ o ‘1’ de modo que la cuenta de 0 s y 10 en la string binaria sea máxima.

Ejemplos:

Entrada: str = 10?0?11
Salida: 1000011
Explicación:
Reemplazar str[2] = ‘0’ y str[4] = ‘0’ modifica la string str = “1000011”. 
La cuenta de 0 en la string es 4 y la cuenta de 10 en la string 1, que es la cantidad máxima posible obtenida de la string dada.

Entrada: str = 1?1?
Salida: 1010

Enfoque: La idea es utilizar el hecho de que reemplazar ‘?’ carácter con un carácter ‘0’ siempre maximiza la cuenta de 0 y 10 . Las siguientes son las observaciones:

Si el carácter ‘?’ es seguido por ‘0’ y luego reemplaza el carácter ‘?’ a ‘0’ incrementa la cuenta de 0 s. 
Si el carácter ‘1’ va seguido de ‘?’ luego reemplazando el carácter ‘?’ a ‘0’ incrementa la cuenta de 0 s y 10
 

Siga los pasos a continuación para resolver el problema:

  • Recorra la string y verifique si el carácter actual es ‘?’ O no. Si se encuentra que es verdadero, entonces reemplace el carácter actual con ‘0’ .
  • Finalmente, imprima la string.

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

C++

// C++ program to implement
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to maximize count of 0 and 10
// by replacing character '?' to '0' or '1'
void findMaxOccurence(string str, int N)
{
    // Traverse the given string
    for (int i = 0; i < N; i++) {
         
        // If current character
        // is '?'
        if (str[i] == '?') {
             
            // Replace str[i] to '0'
            str[i] = '0';
         }
    }
    cout << str <<endl;
     
}
 
// Driver Code
int main()
{
    //Given string
    string str = "10?0?11";
     
    int N = str.length();
     
    findMaxOccurence(str,N);
 
    return 0;
}

Java

// Java program to implement
// the above approach
class GFG
{
 
  // Function to maximize count of 0 and 10
  // by replacing character '?' to '0' or '1'
  static void findMaxOccurence(char[] str, int N)
  {
    // Traverse the given String
    for (int i = 0; i < N; i++)
    {
 
      // If current character
      // is '?'
      if (str[i] == '?')
      {
 
        // Replace str[i] to '0'
        str[i] = '0';
      }
    }
    System.out.print(str);
 
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    // Given String
    String str = "10?0?11";
    int N = str.length();
    findMaxOccurence(str.toCharArray(),N);
  }
}
 
// This code is contributed by shikhasingrajput

C#

// C# program to implement
// the above approach
using System;
class GFG
{
 
  // Function to maximize count of 0 and 10
  // by replacing character '?' to '0' or '1'
  static void findMaxOccurence(char[] str, int N)
  {
     
    // Traverse the given String
    for (int i = 0; i < N; i++)
    {
 
      // If current character
      // is '?'
      if (str[i] == '?')
      {
 
        // Replace str[i] to '0'
        str[i] = '0';
      }
    }
    Console.Write(str);
  }
 
  // Driver Code
  public static void Main(String[] args)
  {
     
    // Given String
    String str = "10?0?11";
    int N = str.Length;
    findMaxOccurence(str.ToCharArray(),N);
  }
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program to implement
# the above approach
 
# Function to maximize count of 0 and 10
# by replacing character '?' to '0' or '1'
def findMaxOccurence(str, N) :
   
    # Traverse the given String
    for i in range(N) :
 
        # If current character
        # is '?'
        if (str[i] == '?') :
         
            # Replace str[i] to '0'
            str[i] = '0'       
    print("".join(str))
 
# Driver Code
 
# Given String
str = list("10?0?11")
N = len(str)
findMaxOccurence(str, N)
 
# This code is contributed by Dharanendra L V

Javascript

<script>
 
// Javascript program to implement
// the above approach
 
// Function to maximize count of 0 and 10
// by replacing character '?' to '0' or '1'
function findMaxOccurence(str, N)
{
    // Traverse the given string
    for (var i = 0; i < N; i++) {
         
        // If current character
        // is '?'
        if (str[i] == '?') {
             
            // Replace str[i] to '0'
            str[i] = '0';
        }
    }
    document.write(str.join(''));
     
}
 
// Driver Code
//Given string
var str = "10?0?11".split('');
 
var N = str.length;
 
findMaxOccurence(str,N);
 
</script>
Producción: 

1000011

 

Complejidad de tiempo: O(N), donde N es la longitud de la string  
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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