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>
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