Given string str, the task is to write a recursive program to remove all the occurrences of a character X in the string.
Examples:
Input: str = “geeksforgeeks”, c = ‘e’
Output: gksforgks
Input: str = “geeksforgeeks”, c = ‘g’
Output: eeksforeeks
Iterative Approach: The iterative approach to this problem can be found in this post.
Recursive Approach: Below are the steps:
- Get the string str and character X for which character X is to be removed.
- Recursively iterate for all the character in the string:
-
Base Case: If the length of the string str called recursively is 0 then return the empty string from the function.
-
Base Case: If the length of the string str called recursively is 0 then return the empty string from the function.
if(str.length()==0) { return ""; }
- Recursive Call: If the base case is not met, then check for the character at 0th index if it is X then recursively iterate for the substring removing the first character.
if (str[0] == X) { return recursive_function(str.substr(1), X); }
-
Return Statement: At each recursive call(except the base case and the above condition), return the recursive function for the next iteration including the character at 0th index.
return str[0] + recursive_function(str.substr(1), X)
Below is the implementation of the above approach:
// 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 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 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# 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 |
<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
Time Complexity: O(N), as we are using a recursive calls to traverse N times, where N is the length of the string.
Auxiliary Space: O(1), as we are not using any extra space.