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

Last Updated : 05 Apr, 2023

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.

Code-

## 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``* str, ``char` `c1, ``char` `c2)` `{`   `    ``int` `j, n = ``strlen``(str);` `    ``for` `(``int` `i = j = 0; i < n; i++) {` `        ``if` `(str[i] != c1) {` `            ``str[j++] = str[i];` `        ``}` `        ``else` `{` `            ``str[j++] = c2;` `        ``}` `    ``}`   `    ``str[j] = ``'\0'``;` `}`   `// 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

 `public` `class` `Main {` `    ``// Function to replace all occurrences` `    ``// of character c1 with character c2` `    ``static` `void` `replaceCharacter(``char``[] str, ``char` `c1, ``char` `c2) {` `        ``int` `j = ``0``;` `        ``int` `n = str.length;` `        ``for` `(``int` `i = ``0``; i < n; i++) {` `            ``if` `(str[i] != c1) {` `                ``str[j++] = str[i];` `            ``} ``else` `{` `                ``str[j++] = c2;` `            ``}` `        ``}` `    ``}`   `    ``public` `static` `void` `main(String[] args) {` `        ``// Given string` `        ``char``[] str = ``"abacd"``.toCharArray();` `        ``char` `c1 = ``'a'``;` `        ``char` `c2 = ``'x'``;`   `        ``// Function call` `        ``replaceCharacter(str, c1, c2);`   `        ``// Print the string` `        ``System.out.println(str);` `    ``}` `}`

## Python3

 `# Function to replace all occurrences` `# of character c1 with character c2` `def` `replaceCharacter(``str``, c1, c2):` `    ``n ``=` `len``(``str``)` `    ``res ``=` `""` `    ``for` `i ``in` `range``(n):` `        ``if` `str``[i] !``=` `c1:` `            ``res ``+``=` `str``[i]` `        ``else``:` `            ``res ``+``=` `c2` `    ``return` `res`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    ``# Given string` `    ``str` `=` `"abacd"` `    ``c1 ``=` `'a'` `    ``c2 ``=` `'x'`   `    ``# Function call` `    ``str` `=` `replaceCharacter(``str``, c1, c2)`   `    ``# Print the string` `    ``print``(``str``)`

## C#

 `using` `System;`   `public` `class` `MainClass` `{` `  `  `  ``// Function to replace all occurrences` `  ``// of character c1 with character c2` `  ``static` `void` `ReplaceCharacter(``char``[] str, ``char` `c1, ``char` `c2)` `  ``{` `    ``int` `j = 0;` `    ``int` `n = str.Length;` `    ``for` `(``int` `i = 0; i < n; i++)` `    ``{` `      ``if` `(str[i] != c1)` `      ``{` `        ``str[j++] = str[i];` `      ``}` `      ``else` `      ``{` `        ``str[j++] = c2;` `      ``}` `    ``}` `  ``}`   `  ``public` `static` `void` `Main(``string``[] args)` `  ``{` `    `  `    ``// Given string` `    ``char``[] str = ``"abacd"``.ToCharArray();` `    ``char` `c1 = ``'a'``;` `    ``char` `c2 = ``'x'``;`   `    ``// Function call` `    ``ReplaceCharacter(str, c1, c2);`   `    ``// Print the string` `    ``Console.WriteLine(str);` `  ``}` `}`

## Javascript

 `// Function to replace all occurrences` `// of character c1 with character c2` `function` `replaceCharacter(str, c1, c2) {` `    ``let result = ``""``;` `    ``for` `(let i = 0; i < str.length; i++) {` `        ``if` `(str[i] != c1) {` `            ``result += str[i];` `        ``} ``else` `{` `            ``result += c2;` `        ``}` `    ``}` `    ``return` `result;` `}`   `// Given string` `let str = ``"abacd"``;` `let c1 = ``'a'``;` `let c2 = ``'x'``;`   `// Function call` `let newStr = replaceCharacter(str, c1, c2);`   `// Print the string` `console.log(newStr);`

Output-

`xbxcd`

Time Complexity: O(N), as we are using a loop to traverse N times so it will cost us O(N) time.
Auxiliary Space: O(1), as we are not using any extra space.

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++

 `// 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] == ``'\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; ` `}`

## 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), as we are using a loop to traverse N times so it will cost us O(N) time, where N is the length of the string.
Auxiliary Space: O(N), due to recursive stack space.