Remove all occurrences of a character in a string | Recursive approach

Given string str, the task is to write a recursive program to remove all the occurrences of a character X in the string.


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:

  1. Get the string str and character X for which character X is to be removed.
  2. 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.
      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;




Time Complexity: O(N), where N is the length of the string
Auxiliary Space: O(1)


My Personal Notes arrow_drop_up

Recommended Posts: