Encuentre la string resultante después de reemplazar X con Y y eliminar Z

Dada una string str , la tarea es reemplazar todas las ocurrencias de la X dada con la Y dada y también eliminar cualquier ocurrencia de la Z dada si está presente en ella sin espacio adicional  
. Ejemplos: 
 

Entrada: str = «batman», X = ‘a’, Y = ‘d’, Z = ‘b’ 
Salida: ntdmd
Entrada: str = «abba», X = ‘a’, Y = ‘d’, Z =
Salida ‘b’  : dd 
 

Recomendado: pruebe su enfoque en {IDE} primero, antes de pasar a la solución.
Acercarse: 
 

  • La idea se basa en los 2 punteros .
  • Deje que los puntos de inicio y final de dos variables sean el principio y el final de la string.
  • Ahora, si el carácter al comienzo es Z, reemplácelo con un carácter que no tenga Y en otro puntero que apunte a una ubicación> comience a tener en cuenta reemplazar el carácter X con Y si lo encuentra.

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

C++

// C++ program to find the resultant String
// after replacing X with Y and removing Z
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to replace and remove
void replaceRemove(string& s, char X, char Y, char Z)
{
 
    // Two pointer start and end points
    // to beginning and end position in the string
    int start = 0, end = s.size() - 1;
 
    while (start <= end) {
 
        // If start is having Z
        // find X pos in end and
        // replace Z with another character
        if (s[start] == Z) {
 
            // Find location for having
            // different character
            // instead of Z
            while (end >= 0 && s[end] == Z) {
                end--;
            }
 
            // If found swap character
            // at start and end
            if (end > start) {
                swap(s[start], s[end]);
                if (s[start] == X)
                    s[start] = Y;
                start++;
            }
        }
        // Else increment start
        // Also checkin for X
        // at start position
        else {
            if (s[start] == X)
                s[start] = Y;
            start++;
        }
    }
    while (s.size() > 0 && s[s.size() - 1] == Z) {
        s.pop_back();
    }
}
 
// Driver code
int main()
{
 
    string str = "batman";
    char X = 'a', Y = 'd', Z = 'b';
 
    replaceRemove(str, X, Y, Z);
 
    if (str.size() == 0) {
        cout << -1;
    }
    else {
        cout << str;
    }
 
    return 0;
}

Java

// Java program to find the resultant String
// after replacing X with Y and removing Z
class GFG
{
     
    // Function to replace and remove
    static String replaceRemove(char []s, char X,
                                   char Y, char Z)
    {
     
        // Two pointer start and end points
        // to beginning and end position in the string
        int start = 0, end = s.length - 1;
     
        while (start <= end)
        {
     
            // If start is having Z
            // find X pos in end and
            // replace Z with another character
            if (s[start] == Z)
            {
     
                // Find location for having
                // different character
                // instead of Z
                while (end >= 0 && s[end] == Z)
                {
                    end--;
                }
     
                char temp ;
                 
                // If found swap character
                // at start and end
                if (end > start)
                {
                    temp = s[start];
                    s[start] = s[end];
                    s[end] = temp;
                     
                    if (s[start] == X)
                        s[start] = Y;
                    start++;
                }
            }
             
            // Else increment start
            // Also checkin for X
            // at start position
            else
            {
                if (s[start] == X)
                    s[start] = Y;
                start++;
            }
        }
         
        String new_s = new String(s);
        while (new_s.length() > 0 &&
            new_s.charAt(new_s.length() - 1) == Z)
        {
            new_s = new_s.substring(0,new_s.length() - 1);
        }
        return new_s;
    }
     
    // Driver code
    public static void main (String[] args)
    {
     
        String str = "batman";
        char X = 'a', Y = 'd', Z = 'b';
     
        str = replaceRemove(str.toCharArray() , X, Y, Z);
     
        if (str.length() == 0)
        {
            System.out.println(-1);
        }
        else
        {
            System.out.println(str);
        }
    }
}
 
// This code is contributed by AnkitRai01

Python3

# Python3 program to find the resultant String
# after replacing X with Y and removing Z
 
# Function to replace and remove
def replaceRemove(s, X, Y, Z) :
 
    s = list(s);
     
    # Two pointer start and end points
    # to beginning and end position in the string
    start = 0;
    end = len(s) - 1;
     
    while (start <= end) :
         
        # If start is having Z
        # find X pos in end and
        # replace Z with another character
        if (s[start] == Z) :
             
            # Find location for having
            # different character
            # instead of Z
            while (end >= 0 and s[end] == Z) :
                end -= 1;
                 
            # If found swap character
            # at start and end
            if (end > start) :
                s[start], s[end] = s[end], s[start]
                if (s[start] == X):
                    s[start] = Y;
                     
                start += 1
                 
        # Else increment start
        # Also checkin for X
        # at start position
        else :
            if (s[start] == X) :
                s[start] = Y;
                 
            start += 1;
             
    while (len(s) > 0 and s[len(s) - 1] == Z):
        s.pop();
         
    return "".join(s)
 
# Driver code
if __name__ == "__main__" :
 
    string = "batman";
    X = 'a'; Y = 'd'; Z = 'b';
 
    string = replaceRemove(string, X, Y, Z);
 
    if (len(string) == 0) :
        print(-1);
 
    else :
        print(string);
 
# This code is contributed by AnkitRai01

C#

// C# program to find the resultant String
// after replacing X with Y and removing Z
using System;
 
class GFG
{
     
    // Function to replace and remove
    static String replaceRemove(char []s, char X,
                                char Y, char Z)
    {
     
        // Two pointer start and end points
        // to beginning and end position in the string
        int start = 0, end = s.Length - 1;
     
        while (start <= end)
        {
     
            // If start is having Z
            // find X pos in end and
            // replace Z with another character
            if (s[start] == Z)
            {
     
                // Find location for having
                // different character
                // instead of Z
                while (end >= 0 && s[end] == Z)
                {
                    end--;
                }
     
                char temp ;
                 
                // If found swap character
                // at start and end
                if (end > start)
                {
                    temp = s[start];
                    s[start] = s[end];
                    s[end] = temp;
                     
                    if (s[start] == X)
                        s[start] = Y;
                    start++;
                }
            }
             
            // Else increment start
            // Also checkin for X
            // at start position
            else
            {
                if (s[start] == X)
                    s[start] = Y;
                start++;
            }
        }
         
        String new_s = new String(s);
        while (new_s.Length > 0 &&
               new_s[new_s.Length - 1] == Z)
        {
            new_s = new_s.Substring(0,new_s.Length - 1);
        }
        return new_s;
    }
     
    // Driver code
    public static void Main(String[] args)
    {
     
        String str = "batman";
        char X = 'a', Y = 'd', Z = 'b';
     
        str = replaceRemove(str.ToCharArray() , X, Y, Z);
     
        if (str.Length == 0)
        {
            Console.WriteLine(-1);
        }
        else
        {
            Console.WriteLine(str);
        }
    }
}
 
// This code is contributed by PrinciRaj1992

Producción : 
 

ndtmd

Publicación traducida automáticamente

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