Given a string, write a recursive program to reverse it

String Reverse
Reverse String using Stack:
The idea is to push all the characters of the string in a stack. Then pop the elements of the stack and store it in the initial string from the starting index. Since the stack is based on last in first out, so the string formed will be reverse of the original string.
Below is the implementation of the above approach:
C++
// C++ program to reverse a string using stack#include <bits/stdc++.h>using namespace std;Â
void reversebyStack(string &str){  // To store the characters of original string.    stack<char> st;   for (int i=0; i<str.length(); i++)     // Push the charcters into stack       st.push(str[i]);Â
   for (int i=0; i<str.length(); i++) {     // Pop the charcters of stack into the original string.       str[i] = st.top();       st.pop();   }      }Â
// Driver programint main(){  // Original String    string str = "neveropen";    reversebyStack(str);    cout << str;    return 0;} |
Java
// Java program to reverse a string using stackimport java.util.*;class GFG{  public static String reversebyStack(char []str)  {    Stack<Character> st = new Stack<>();    for(int i=0; i<str.length; i++)      // Push the charcters into stack        st.push(str[i]); Â
   for (int i=0; i<str.length; i++) {       // Pop the charcters of stack into the original string.    str[i] = st.peek();     st.pop();    }       return String.valueOf(str);// converting character array to string } Â
// Driver program    public static void main(String []args)    {       String str = "neveropen";       str = reversebyStack(str.toCharArray());// passing character array as parameter       System.out.println(str);    }}// This code is contributed by Adarsh_Verma |
Python3
# Python program to reverse a string using stackÂ
def reversebyStack(str):         # using as stack    stack = []Â
    for i in range(len(str)):      # Push the charcters into stack        stack.append(str[i])         for i in range(len(str)):       # Pop the charcters of stack into the original string.        str[i] = stack.pop()Â
if __name__ == "__main__":Â Â Â Â str = "neveropen"Â
    # converting string to list    # because strings do not support    # item assignment    str = list(str)    reversebyStack(str)Â
    # converting list to string    str = ''.join(str)    print(str)     # This code is contributed by# sanjeev2552 |
C#
// C# program to reverse a string using stack using System;using System.Collections.Generic;Â
class GFG {     public static String reversebyStack(char []str)     {         Stack<char> st = new Stack<char>();         for(int i = 0; i < str.Length; i++)           // Push the charcters into stack            st.Push(str[i]); Â
        for (int i = 0; i < str.Length; i++)         {            // Pop the charcters of stack into the original string.            str[i] = st.Peek();             st.Pop();         }                  // converting character array to string        return String.Join("",str);     } Â
    // Driver program     public static void Main()     {         String str = "neveropen";                  // passing character array as parameter        str = reversebyStack(str.ToCharArray());         Console.WriteLine(str);     } } Â
// This code is contributed by Rajput-Ji |
Javascript
// Function to reverse a string using a stackfunction reverseByStack(str) {    // To store the characters of the original string.    const stack = [];Â
    // Push the characters into the stack.    for (let i = 0; i < str.length; i++) {        stack.push(str[i]);    }Â
    // Pop the characters of the stack and build the reversed string.    let reversedStr = '';    while (stack.length > 0) {        reversedStr += stack.pop();    }Â
    return reversedStr;}Â
// Driver programfunction main() {    // Original String    let str = "neveropen";    let reversedStr = reverseByStack(str);    console.log(reversedStr);}Â
main();Â
Â
// This code is contributed by shivamgupta0987654321 |
skeegrofskeeg
Time Complexity: O(n)Â
Auxiliary Space: O(n)
Reverse String using two pointers:
The idea is to use two pointers. The left pointer is placed at the beginning of the string and the right pointer is placed at the end of the string. Now swap the characters at left and right pointers, after that left pointer moves forward by 1 step and right pointer moves backward by 1 step. This operation is continued till right pointer is ahead of left pointer.
Below is the implementation of the above approach:
C++
// A Simple Iterative C++ program to reverse// a string#include <bits/stdc++.h>using namespace std;Â
// Function to reverse a stringvoid reverseStr(string& str){Â Â Â Â int n = str.length();Â
    // Swap character starting from two    // corners    // i is the left pointer and j is the right pointer    for (int i = 0, j = n - 1; i < j; i++, j--)        swap(str[i], str[j]);}Â
// Driver programint main(){Â Â Â Â string str = "neveropen";Â Â Â Â reverseStr(str);Â Â Â Â cout << str;Â Â Â Â return 0;} |
Java
//A Simple Iterative Java program to reverse//a stringimport java.io.*;class GFG {Â
    //Function to reverse a string    static void reverseStr(String str)    {     int n = str.length();     char []ch = str.toCharArray();     char temp;Â
     // Swap character starting from two     // corners     // i is the left pointer and j is the right pointer     for (int i=0, j=n-1; i<j; i++,j--)     {         temp = ch[i];         ch[i] = ch[j];         ch[j] = temp;     }                    System.out.println(ch);    }Â
    //Driver program    public static void main(String[] args) {                 String str = "neveropen";         reverseStr(str);    }}// This code is contributed by Ita_c. |
Python3
# A Simple Iterative Python program to # reverse a stringÂ
# Function to reverse a stringdef reverseStr(str):Â Â Â Â n = len(str)Â
    i, j = 0, n-1Â
    # Swap character starting from    # two corners    # i is the left pointer and j is the right pointer    while i < j:        str[i], str[j] = str[j], str[i]Â
        i += 1        j -= 1Â
Â
# Driver codeif __name__ == "__main__":Â Â Â Â str = "neveropen"Â
    # converting string to list    # because strings do not support    # item assignment    str = list(str)    reverseStr(str)Â
    # converting list to string    str = ''.join(str)Â
    print(str)Â
# This code is contributed by# sanjeev2552 |
C#
// A Simple Iterative C# program // to reverse a string using System;Â
class GFG { Â
    //Function to reverse a string     static void reverseStr(String str)     {         int n = str.Length;         char []ch = str.ToCharArray();         char temp; Â
        // Swap character starting from two         // corners         // i is the left pointer and j is the right pointer        for (int i=0, j=n-1; i<j; i++,j--)         {             temp = ch[i];             ch[i] = ch[j];             ch[j] = temp;         }         Console.WriteLine(ch);     } Â
    //Driver program     public static void Main(String[] args)    {         String str = "neveropen";         reverseStr(str);     } } Â
// This code is contributed by PrinciRaj1992 |
Javascript
<script>//A Simple Iterative Javascript program to reverse//a stringÂ
//Function to reverse a stringfunction reverseStr(str){    let n = str.length;     let ch = str.split("");     let temp;       // Swap character starting from two     // corners     // i is the left pointer and j is the right pointer     for (let i=0, j=n-1; i<j; i++,j--)     {         temp = ch[i];         ch[i] = ch[j];         ch[j] = temp;     }                      document.write(ch.join("")+"<br>");}Â
//Driver programlet str = "neveropen";reverseStr(str);Â
// This code is contributed by rag2127</script> |
PHP
<?php// A Simple Iterative PHP // program to reverse a stringÂ
// Function to reverse a stringfunction reverseStr (&$str){Â Â Â Â $n = strlen($str);Â
    // Swap character starting    // from two corners    for ($i = 0, $j = $n - 1;          $i < $j; $i++, $j--)        //swap function         list($str[$i],              $str[$j]) = array($str[$j],                                $str[$i]);}Â
// Driver Code$str = "neveropen";reverseStr($str);echo $str;Â
// This code is contributed by ajit.?> |
skeegrofskeeg
Time Complexity: O(n)Â
Auxiliary Space: O(1)
Reverse String using Recursion:
The recursive algorithm to reverse a string works by swapping the first and last characters until the middle of the string is reached. This process is performed through recursive calls, where in each call, characters at positions
iandn-i-1are swapped, andiis incremented. This continues untilireachesn/2, and the string is completely reversed.
Below is the implementation of the above approach:
C++
// Recursive C++ program to reverse a string#include <bits/stdc++.h>using namespace std;Â
// Recursive function to reverse the stringvoid recursiveReverse(string &str, int i = 0){    int n = str.length();    if (i == n / 2)        return;  // Swap the i and n-i-1 character    swap(str[i], str[n - i - 1]);  // Call Recursive function after incrementing i.    recursiveReverse(str, i + 1);}Â
// Driver programint main(){Â Â Â Â string str = "neveropen";Â Â Â Â recursiveReverse(str);Â Â Â Â cout << str;Â Â Â Â return 0;} |
Java
// Recursive Java program to reverse a stringimport java.io.*;class GFG {Â
  // Recursive function to reverse the stringstatic void recursiveReverse(char[] str, int i){    int n = str.length;       if (i == n / 2)        return;     // Swap the i and n-i-1 character    swap(str,i,n - i - 1);     // Call Recursive function after incrementing i.    recursiveReverse(str, i + 1);}static void swap(char []arr, int i, int j){    char temp= arr[i];    arr[i]=arr[j];    arr[j]=temp;} Â
// Driver programpublic static void main(String[] args) {Â Â Â Â char[] str = "neveropen".toCharArray();Â Â Â Â recursiveReverse(str,0);Â Â Â Â System.out.println(String.valueOf(str));}}Â
// This code is contributed by 29AjayKumar |
Python3
# Recursive Python program to reverse a stringÂ
def recursiveReverse(str, i = 0):Â Â Â Â n = len(str)Â
    if i == n // 2:        return    # Swap the i and n-i-1 character    str[i], str[n-i-1] = str[n-i-1], str[i]         # Call Recursive function after incrementing i.    recursiveReverse(str, i+1)Â
if __name__ == "__main__":Â Â Â Â str = "neveropen"Â
    # converting string to list    # because strings do not support    # item assignment    str = list(str)    recursiveReverse(str)Â
    # converting list to string    str = ''.join(str)    print(str)Â
# This code is contributed by # sanjeev2552 |
C#
// Recursive C# program to reverse a stringusing System;Â
public class GFG {  static void recursiveReverse(char[] str, int i){    int n = str.Length;    if (i == n / 2)        return;     // Swap the i and n-i-1 character    swap(str,i,n - i - 1);     // Call Recursive function after incrementing i.    recursiveReverse(str, i + 1);}static char[] swap(char []arr, int i, int j){    char temp= arr[i];    arr[i]=arr[j];    arr[j]=temp;    return arr;}   // Driver programpublic static void Main(String[] args) {    char[] str = "neveropen".ToCharArray();    recursiveReverse(str,0);    Console.WriteLine(String.Join("",str));}}// This code is contributed by Princi Singh |
Javascript
// Recursive JavaScript function to reverse a stringfunction recursiveReverse(str, i = 0) {    const n = str.length;    if (i >= Math.floor(n / 2))        return str;    // Swap the i and n-i-1 characters    str = str.substring(0, i) + str[n - i - 1] + str.substring(i + 1, n - i - 1) + str[i] + str.substring(n - i);    // Call Recursive function after incrementing i.    return recursiveReverse(str, i + 1);}Â
// Driver program    let str = "neveropen";    str = recursiveReverse(str);    console.log(str); |
PHP
<?php// A Simple PHP program// to reverse a stringÂ
// Function to reverse a stringfunction reverseStr($str){Â
    // print the string    // from last    echo strrev($str);}Â
// Driver Code$str = "neveropen";Â
reverseStr($str);Â
// This code is contributed// by Srathore?> |
skeegrofskeeg
Time Complexity: O(n) where n is length of string
Auxiliary Space: O(n)
Reverse String using inbuilt method
Below is the implementation to reverse a string using built-in methods in different programming languages:
C++
#include <bits/stdc++.h>using namespace std;Â
int main(){    string str = "neveropen"; // Input string    reverse(str.begin(),str.end()); // Reverse the string    cout << str << std::endl;    return 0;}Â
Â
// This code is contributed by prajwalkandekar123. |
Java
//Java program to reverse a string using StringBuffer classÂ
import java.io.*;import java.util.*;Â
class GFG {         //Driver Code    public static void main (String[] args) {        String str = "neveropen";//Input String                 //Step 1: Initialise an object of StringBuffer class        StringBuffer sb = new StringBuffer(str);                 //Step 2: Invoke the .reverse() method        sb.reverse();                 //Step 3: Convert the StringBuffer to string by using toString() method        System.out.println(sb.toString());             }}Â
//This code is contributed by shruti456rawal |
Python3
# Driver Codeif __name__ == '__main__':Â Â Â Â str = "neveropen" # Input StringÂ
    # Step 1: Initialise an object of StringBuffer class    sb = str[::-1]Â
    # Step 2: Invoke the .reverse() method (not applicable in Python)Â
    # Step 3: Print the reversed string    print(sb) |
C#
// c# codeÂ
using System;Â
class Program {    static void Main(string[] args)    {        string str = "neveropen"; // Input string        char[] charArray            = str.ToCharArray(); // Convert string to char                                 // array        Array.Reverse(charArray); // Reverse the array        str = new string(            charArray); // Convert char array back to string        Console.WriteLine(            str); // Output the reversed string    }}// ksam24000 |
Javascript
let str = "neveropen"; // Input stringstr = str.split('').reverse().join(''); // Reverse the stringconsole.log(str);Â
// This code is contributed by Prajwal Kandekar |
skeegrofskeeg
Time Complexity: O(n)
Auxiliary Space: O(1) in all the programming languages except Java in which it will be, O(n) (The extra space is used to store the StringBuffer string).
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
