Reemplace todas las apariciones de la string AB con C sin usar espacio adicional

Dada una string str que puede contener una ocurrencia más de «AB». Reemplace todas las apariciones de «AB» con «C» en str.

Ejemplos: 

Input  : str = "helloABworld"
Output : str = "helloCworld"

Input  : str = "fghABsdfABysu"
Output : str = "fghCsdfCysu"

Una solución simple es encontrar todas las apariciones de «AB». Para cada ocurrencia, reemplácela con C y mueva todos los caracteres una posición hacia atrás.  

Implementación:

C++

// C++ program to replace all occurrences of "AB"
// with "C"
#include <bits/stdc++.h>
 
void translate(char* str)
{
    if (str[0] == '')
        return;
 
    // Start traversing from second character
    for (int i=1; str[i] != ''; i++)
    {
        // If previous character is 'A' and
        // current character is 'B"
        if (str[i-1]=='A' && str[i]=='B')
        {
            // Replace previous character with
            // 'C' and move all subsequent
            // characters one position back
            str[i-1] = 'C';
            for (int j=i; str[j]!=''; j++)
                str[j] = str[j+1];
        }
    }
    return;
}
 
// Driver code
int main()
{
    char str[] = "helloABworldABGfG";
    translate(str);
    printf("The modified string is :\n");
    printf("%s", str);
}

Java

// Java program to replace all
// occurrences of "AB" with "C"
import java.io.*;
 
class GFG {
     
    static void translate(char str[])
    {
        // Start traversing from second character
        for (int i = 1; i < str.length; i++)
        {
            // If previous character is 'A' and
            // current character is 'B"
            if (str[i - 1] == 'A' && str[i] == 'B')
            {
                // Replace previous character with
                // 'C' and move all subsequent
                // characters one position back
                str[i - 1] = 'C';
                int j;
                for (j = i; j < str.length - 1; j++)
                    str[j] = str[j + 1];
                str[j] = ' ';
                 
            }
        }
        return;
    }
     
    // Driver code
    public static void main(String args[])
    {
        String st = "helloABworldABGfG";
        char str[] = st.toCharArray();
        translate(str);
        System.out.println("The modified string is :");
        System.out.println(str);
    }
}
 
 
// This code is contributed by Nikita Tiwari.

Python3

# Python 3 program to replace all
# occurrences of "AB" with "C"
 
def translate(st) :
     
    # Start traversing from second character
    for i in range(1, len(st)) :
         
        # If previous character is 'A'
        # and current character is 'B"
        if (st[i - 1] == 'A' and st[i] == 'B') :
             
            # Replace previous character with
            # 'C' and move all subsequent
            # characters one position back
            st[i - 1] = 'C'
             
            for j in range(i, len(st) - 1) :
                st[j] = st[j + 1]
                 
            st[len(st) - 1] = ' '
                 
    return
 
# Driver code
st = list("helloABworldABGfG")
translate(st)
 
print("The modified string is :")
print(''.join(st))
 
# This code is contributed by Nikita Tiwari.

C#

// C# program to replace all
// occurrences of "AB" with "C"
using System;
 
class GFG {
     
    static void translate(char []str)
    {
         
        // Start traversing from second character
        for (int i = 1; i < str.Length; i++)
        {
            // If previous character is 'A' and
            // current character is 'B"
            if (str[i - 1] == 'A' && str[i] == 'B')
            {
                // Replace previous character with
                // 'C' and move all subsequent
                // characters one position back
                str[i - 1] = 'C';
                int j;
                for (j = i; j < str.Length - 1; j++)
                    str[j] = str[j + 1];
                str[j] = ' ';
                 
            }
        }
        return;
    }
     
    // Driver code
    public static void Main()
    {
        String st = "helloABworldABGfG";
        char []str = st.ToCharArray();
        translate(str);
        Console.WriteLine("The modified string is :");
        Console.Write(str);
    }
}
 
 
// This code is contributed by Nitin Mittal.

PHP

<?php
// PHP program to replace all
// occurrences of "AB" with "C"
 
function translate(&$str)
{
    if ($str[0] == '')
        return;
 
    // Start traversing from second character
    for ($i = 1; $i < strlen($str); $i++)
    {
        // If previous character is 'A' and
        // current character is 'B"
        if ($str[$i - 1] == 'A' && $str[$i] == 'B')
        {
            // Replace previous character with
            // 'C' and move all subsequent
            // characters one position back
            $str[$i - 1] = 'C';
            for ($j = $i; $j < strlen($str) ; $j++)
                $str[$j] = $str[$j + 1];
        }
    }
    return;
}
 
// Driver code
$str = "helloABworldABGfG";
translate($str);
echo "The modified string is :\n";
echo $str;
 
// This code is contributed
// by ChitraNayal
?>

Javascript

<script>
 
// Javascript program to replace all
// occurrences of "AB" with "C"
function translate(str)
{
     
    // Start traversing from second character
    for(let i = 1; i < str.length; i++)
    {
         
        // If previous character is 'A' and
        // current character is 'B"
        if (str[i - 1] == 'A' && str[i] == 'B')
        {
             
            // Replace previous character with
            // 'C' and move all subsequent
            // characters one position back
            str[i - 1] = 'C';
            let j;
             
            for(j = i; j < str.length - 1; j++)
                str[j] = str[j + 1];
                 
            str[j] = ' ';
        }
    }
    return;
}
 
// Driver code
let st = "helloABworldABGfG";
let str = st.split("");
translate(str);
 
document.write("The modified string is :<br>");
document.write(str.join(""));
 
// This code is contributed by avanitrachhadiya2155
 
</script>

Producción : 

The modified string is :
helloCworldCGfG

Complejidad de Tiempo : O(n 2
Espacio Auxiliar : O(1)

Una solución eficiente es realizar un seguimiento de dos índices, uno para la string modificada ( i en el código a continuación) y otro para la string original ( j en el código a continuación). Si encontramos «AB» en el índice actual j, incrementamos j en 2 e i en 1. De lo contrario, incrementamos ambos y copiamos el carácter de j a i. 

A continuación se muestra la implementación de la idea anterior.  

C++

// Efficient C++ program to replace all occurrences
// of "AB" with "C"
#include <bits/stdc++.h>
using namespace std;
 
void translate(string &str)
{
    int len = str.size();
    if (len < 2)
        return;
 
    // Index in modified string
    int i = 0;
 
    // Index in original string
    int j = 0;
 
    // Traverse string
    while (j < len - 1) {
        // Replace occurrence of "AB" with "C"
        if (str[j] == 'A' && str[j + 1] == 'B') {
            // Increment j by 2
            j = j + 2;
            str[i++] = 'C';
            continue;
        }
        str[i++] = str[j++];
    }
 
    if (j == len - 1)
        str[i++] = str[j];
 
    // add a null character to terminate string
    str[i] = ' ';
    str[len - 1] = ' ';
}
 
// Driver code
int main()
{
    string str = "helloABworldABGfG";
    translate(str);
    cout << "The modified string is:" << endl << str;
}

Java

// Efficient Java program to replace
// all occurrences of "AB" with "C"
import java.io.*;
 
class GFG {
     
    static void translate(char str[])
    {
        int len = str.length;
        if (len < 2)
        return;
     
        // Index in modified string
        int i = 0;
         
        // Index in original string
        int j = 0;
     
        // Traverse string
        while (j < len - 1)
        {
            // Replace occurrence of "AB" with "C"
            if (str[j] == 'A' && str[j + 1] == 'B')
            {
                // Increment j by 2
                j = j + 2;
                str[i++] = 'C';
                continue;
            }
            str[i++] = str[j++];
        }
     
        if (j == len - 1)
        str[i++] = str[j];
     
        // add a null character to terminate string
        str[i] = ' ';
        str[len - 1]=' ';
    }
     
    // Driver code
    public static void main(String args[])
    {
        String st="helloABworldABGfG";
        char str[] = st.toCharArray();
        translate(str);
        System.out.println("The modified string is :");
        System.out.println(str);
    }
}
 
 
// This code is contributed
// by Nikita Tiwari.

Python3

# Python 3 program to replace all
# occurrences of "AB" with "C"
 
def translate(st) :
    l = len(st)
     
    if (l < 2) :
        return
 
    i = 0 # Index in modified string
    j = 0 # Index in original string
 
    # Traverse string
    while (j < l - 1) :
         
        # Replace occurrence of "AB" with "C"
        if (st[j] == 'A' and st[j + 1] == 'B') :
             
            # Increment j by 2
            j += 2
            st[i] = 'C'
            i += 1
            continue
         
        st[i] = st[j]
        i += 1
        j += 1
     
 
    if (j == l - 1) :
        st[i] = st[j]
        i += 1
 
    # add a null character to
    # terminate string
    st[i] = ' '
    st[l-1] = ' '
 
# Driver code
st = list("helloABworldABGfG")
translate(st)
 
print("The modified string is :")
print(''.join(st))
 
# This code is contributed by Nikita Tiwari.

C#

// Efficient C# program to replace
// all occurrences of "AB" with "C"
using System;
 
class GFG {
     
    static void translate(char []str)
    {
        int len = str.Length;
        if (len < 2)
            return;
     
        // Index in modified string
        int i = 0;
         
        // Index in original string
        int j = 0;
     
        // Traverse string
        while (j < len - 1)
        {
             
            // Replace occurrence of "AB" with "C"
            if (str[j] == 'A' && str[j + 1] == 'B')
            {
                // Increment j by 2
                j = j + 2;
                str[i++] = 'C';
                continue;
            }
            str[i++] = str[j++];
        }
     
        if (j == len - 1)
            str[i++] = str[j];
     
        // add a null character to
        // terminate string
        str[i] = ' ';
        str[len - 1]=' ';
    }
     
    // Driver code
    public static void Main()
    {
        String st="helloABworldABGfG";
        char []str = st.ToCharArray();
        translate(str);
        Console.Write("The modified string is :");
        Console.Write(str);
    }
}
 
// This code is contributed by nitin mittal.

Javascript

<script>
 
// Efficient javascript program to replace
// all occurrences of "AB" with "C"
function translate(str)
{
    var len = str.length;
    if (len < 2)
       return;
        
    // Index in modified string
    var i = 0; 
     
    // Index in original string
    var j = 0;
 
    // Traverse string
    while (j < len - 1)
    {
         
        // Replace occurrence of "AB" with "C"
        if (str[j] == 'A' && str[j + 1] == 'B')
        {
             
            // Increment j by 2
            j = j + 2;
            let firstPart = str.substr(0, i);
            let lastPart =  str.substr(i + 1);
            str = firstPart + 'C' + lastPart;
            i += 1;
            continue;
        }
        let firstPart = str.substr(0, i);
        let lastPart =  str.substr(i + 1);
        str = firstPart + str[j] + lastPart;
        i += 1;
        j += 1;
    }
 
    if (j == len - 1)
    {
        let firstPart = str.substr(0, i);
        let lastPart =  str.substr(i + 1);
        str = firstPart + str[j] + lastPart;
        i += 1;
    }
 
    // Add a null character to terminate string
    let firstPart = str.substr(0, i);
    let lastPart =  str.substr(i + 1);
    str = firstPart + ' ' + lastPart;
    firstPart = str.substr(0, len - 1);
    lastPart =  str.substr(len);
    str = firstPart + ' ' + lastPart;
     
    // str[len - 1]=' ';
    return str;
}
 
// Driver code
var str = "helloABworldABGfG";
document.write("The modified string is :" +
               "<br>" + translate(str));
 
// This code is contributed by ipg2016107
 
</script>
Producción

The modified string is:
helloCworldCGfG  

Tiempo Complejidad : O(n) 
Espacio Auxiliar : O(1)

Este artículo es una contribución de Roshni Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuir@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

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