Eliminar todas las apariciones de un carácter en una string | Enfoque recursivo

Dada la string str , la tarea es escribir un programa recursivo para eliminar todas las ocurrencias de un carácter X en la string.

Ejemplos:

Entrada: str = “geeksforgeeks”, c = ‘e’ 
Salida: gksforgks
Entrada: str = “geeksforgeeks”, c = ‘g’ 
Salida: eeksforeeks 
 

Enfoque iterativo: El enfoque iterativo de este problema se puede encontrar en esta publicación.
Enfoque recursivo: A continuación se muestran los pasos: 
 

  1. Obtenga la string str y el carácter X para el cual se eliminará el carácter X.
  2. Iterar recursivamente para todos los caracteres en la string: 
    • Caso base: si la longitud de la string str llamada recursivamente es 0, devuelva la string vacía de la función. 
       
if(str.length()==0) {
   return "";
}
  • Llamada recursiva: si no se cumple el caso base, verifique el carácter en el índice 0 si es X y luego itere recursivamente para la substring eliminando el primer carácter.
if (str[0] == X) {
        return recursive_function(str.substr(1), X);
}
  • Declaración de devolución: en cada llamada recursiva (excepto el caso base y la condición anterior), devuelva la función recursiva para la siguiente iteración, incluido el carácter en el índice 0
     
return str[0] + recursive_function(str.substr(1), X)

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 remove all occurrences
// of a character in the string
string removeCharRecursive(string str,
                           char X)
{
    // Base Case
    if (str.length() == 0) {
        return "";
    }
 
    // Check the first character
    // of the given string
    if (str[0] == X) {
 
        // Pass the rest of the string
        // to recursion Function call
        return removeCharRecursive(str.substr(1), X);
    }
 
    // Add the first character of str
    // and string from recursion
    return str[0]
           + removeCharRecursive(str.substr(1), X);
}
 
// Driver Code
int main()
{
    // Given String
    string str = "geeksforgeeks";
 
    // Given character
    char X = 'e';
 
    // Function Call
    str = removeCharRecursive(str, X);
    cout << str;
    return 0;
}

Java

// Java program for the above approach
class GFG{
     
// Function to remove all occurrences
// of a character in the string
static String removeCharRecursive(String str,
                                  char X)
{
     
    // Base Case
    if (str.length() == 0)
    {
        return "";
    }
 
    // Check the first character
    // of the given string
    if (str.charAt(0) == X)
    {
 
        // Pass the rest of the string
        // to recursion Function call
        return removeCharRecursive(
               str.substring(1), X);
    }
 
    // Add the first character of str
    // and string from recursion
    return str.charAt(0) +
           removeCharRecursive(
           str.substring(1), X);
}
 
// Driver Code
public static void main(String[] args)
{
     
    // Given String
    String str = "geeksforgeeks";
 
    // Given character
    char X = 'e';
 
    // Function call
    str = removeCharRecursive(str, X);
     
    System.out.println(str);
}
}
 
// This code is contributed by jrishabh99

Python3

# Python3 program for the above approach
 
# Function to remove all occurrences
# of a character in the string
def removeCharRecursive(str, X):
     
    # Base Case
    if (len(str) == 0):
        return ""
     
    # Check the first character
    # of the given string
    if (str[0] == X):
 
        # Pass the rest of the string
        # to recursion Function call
        return removeCharRecursive(str[1:], X)
     
    # Add the first character of str
    # and string from recursion
    return str[0] + removeCharRecursive(str[1:], X)
 
# Driver Code
 
# Given String
str = "geeksforgeeks"
 
# Given character
X = 'e'
 
# Function call
str = removeCharRecursive(str, X)
 
print(str)
 
# This code is contributed by sanjoy_62

C#

// C# program for the above approach
using System;
 
class GFG{
     
// Function to remove all occurrences
// of a character in the string
static String removeCharRecursive(String str,
                                  char X)
{
     
    // Base Case
    if (str.Length == 0)
    {
        return "";
    }
 
    // Check the first character
    // of the given string
    if (str[0] == X)
    {
 
        // Pass the rest of the string
        // to recursion Function call
        return removeCharRecursive(
            str.Substring(1), X);
    }
 
    // Add the first character of str
    // and string from recursion
    return str[0] + removeCharRecursive(
                    str.Substring(1), X);
}
 
// Driver Code
public static void Main(String[] args)
{
     
    // Given String
    String str = "geeksforgeeks";
 
    // Given character
    char X = 'e';
 
    // Function call
    str = removeCharRecursive(str, X);
     
    Console.WriteLine(str);
}
}
 
// This code is contributed by Amit Katiyar

Javascript

<script>
 
// javascript program for the above approach
 
     
// Function to remove all occurrences
// of a character in the string
function removeCharRecursive(str,X)
{
     
    // Base Case
    if (str.length == 0)
    {
        return "";
    }
 
    // Check the first character
    // of the given string
    if (str.charAt(0) == X)
    {
 
        // Pass the rest of the string
        // to recursion Function call
        return removeCharRecursive(
               str.substring(1), X);
    }
 
    // Add the first character of str
    // and string from recursion
    return str.charAt(0) +
           removeCharRecursive(
           str.substring(1), X);
}
 
// Driver Code
//Given String
var str = "geeksforgeeks";
 
// Given character
var X = 'e';
 
// Function call
str = removeCharRecursive(str, X);
 
document.write(str);
 
// This code is contributed by 29AjayKumar
</script>
Producción: 

gksforgks

 

Complejidad de tiempo : O (N), ya que estamos usando llamadas recursivas para atravesar N veces, donde N es la longitud de la string.

Espacio auxiliar : O(1), ya que no estamos utilizando ningún espacio adicional.
 

Publicación traducida automáticamente

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