Skip to content
Related Articles

Related Articles

Replace all occurrences of character X with character Y in given string
  • Difficulty Level : Medium
  • Last Updated : 25 Jan, 2021

Given a string str and two characters X and Y, the task is to write a recursive function to replace all occurrences of character X with character Y.

Examples: 

Input: str = abacd, X = a, Y = x 
Output: xbxcd

Input: str = abacd, X = e, Y = y 
Output: abacd  

 

Iterative Approach: The idea is to iterate over the given string and if any character X is found then replace that character with Y.



Time Complexity: O(N)
Auxiliary Space: O(1) 

Recursive Approach: The idea is to recursively traverse the given string and replace the character with value X with Y. Below are the steps:

  1. Get the string str, character X, and Y.
  2. Recursively Iterate from index 0 to string length.
    • Base Case: If we reach the end of the string the exit from the function. 
       
if(str[0]=='\0')
   return ;
  • Recursive Call: If the base case is not met, then check for the character at 0th index if it is X then replace that character with Y and recursively iterate for next character. 
     
if(str[0]==X) 
  str[0] = Y
  • Return Statement: At each recursive call(except the base case), return the recursive function for the next iteration. 
     
return recursive_function(str + 1, X, Y)

Below is the recursive implementation:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to replace all occurrences
// of character c1 with character c2
void replaceCharacter(char input[],
                    char c1, char c2)
{
    // Base Case
    // If the string is empty
    if (input[0] == '\0') {
        return;
    }
 
    // If the character at starting
    // of the given string is equal
    // to c1, replace it with c2
    if (input[0] == c1) {
        input[0] = c2;
    }
 
    // Getting the answer from recursion
    // for the smaller problem
    return replaceCharacter(input + 1,
                            c1, c2);
}
 
// Driver Code
int main()
{
    // Given string
    char str[] = "abacd";
    char c1 = 'a';
    char c2 = 'x';
 
    // Function call
    replaceCharacter(str, c1, c2);
 
    // Print the string
    cout << str;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for the above approach
import java.util.*;
import java.io.*;
 
class GFG{
     
// Function to replace all occurrences
// of character c1 with character c2
static String replaceCharacter(String str,
                             char c1, char c2)
{
    // Base Case
    // If the string is empty
    if (str.length() == 1)
    {
        return str;
    }
    char x=str.charAt(0);
    // If the character at starting
    // of the given string is equal
    // to c1, replace it with c2
    if (str.charAt(0) == c1)
    {
        x=c2;
        str = c2+str.substring(1);
    }
 
    // Getting the answer from recursion
    // for the smaller problem
    return x+replaceCharacter(str.substring(1),
                            c1, c2);
}
 
// Driver Code
public static void main(String[] args)
{
     
    // Given string
    String str = "abacd";
    char c1 = 'a';
    char c2 = 'x';
 
    // Function call
    System.out.println(replaceCharacter(str, c1, c2));
}
}
 
// This code is contributed by cyrus18

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for the above approach
 
# Function to replace all occurrences
# of character c1 with character c2
def replaceCharacter(input, c1, c2):
     
    input = list(str)
     
    # If the character at starting
    # of the given string is equal
    # to c1, replace it with c2
    for i in range(0, len(str)):
        if (input[i] == c1):
            input[i] = c2;
             
        # Print the string
        print(input[i], end = "")
     
# Driver Code
 
# Given string
str = "abacd"
c1 = 'a'
c2 = 'x'
 
# Function call
replaceCharacter(str, c1, c2);
 
# This code is contributed by sanjoy_62

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for the above approach
using System;
 
class GFG{
     
// Function to replace all occurrences
// of character c1 with character c2
static void replaceCharacter(string str,
                             char c1, char c2)
{
    char[] input = str.ToCharArray();
 
    // If the character at starting
    // of the given string is equal
    // to c1, replace it with c2
    for(int i = 0; i < str.Length; i++)
    {
        if (input[i] == c1)
        {
            input[i] = c2;
        }
     
        // Print the string
        Console.Write(input[i]);
    }
}
 
// Driver Code
public static void Main()
{
     
    // Given string
    string str = "abacd";
    char c1 = 'a';
    char c2 = 'x';
 
    // Function call
    replaceCharacter(str, c1, c2);
}
}
 
// This code is contributed by sanjoy_62

chevron_right


Output

xbxcd

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

competitive-programming-img

My Personal Notes arrow_drop_up
Recommended Articles
Page :