 GeeksforGeeks App
Open App Browser
Continue

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

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')
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), 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.

My Personal Notes arrow_drop_up