Related Articles

# Replace all occurrences of character X with character Y in given string

• Difficulty Level : Medium
• Last Updated : 19 May, 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')
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==X)
str = 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++

 `// C++ program for the above approach``#include ``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'``) {``        ``return``;``    ``}` `    ``// If the character at starting``    ``// of the given string is equal``    ``// to c1, replace it with c2``    ``if` `(input == c1) {``        ``input = 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;``}`

## Java

 `// 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`

## Python3

 `# 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`

## C#

 `// 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`

## Javascript

 ``
Output
`xbxcd`

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

My Personal Notes arrow_drop_up