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:
- Obtenga la string str y el carácter X para el cual se eliminará el carácter X.
- 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.
- 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>
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