Open In App
Related Articles

String Reverse in C/C++/Java/Python/JavaScript

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

String reverse or reverse a string means changing the position of each character of the given string to its opposite position from end, i.e. if a character is at position 1 then its new position will be String.length, similarly if a character is at position 2 then its new position will be String.length – 1, and so on.

String Reverse in C/C++/Java/Python/JavaScript

String Reverse in C/C++/Java/Python/JavaScript


Given a string, write a program to reverse the string.

Input: original_string[] = Geeks
Output: string_reversed[] = skeeG

Input: original_string[] = GeeksForGeeks
Output: string_reversed[] = skeeGroFskeeG


Reverse String using a Loop:

  1. Initialize an empty string to store the reversed result.
  2. Iterate through the original string in reverse order.
  3. Append each character to the new string.
  4. The new string is the reversed version of the original string.

Below is the implementation to reverse a string using loop in different programming languages:

C++

#include <iostream>
#include <string>
 
std::string reverseStringLoop(const std::string& inputStr) {
    std::string reversedStr;
    for (int i = inputStr.length() - 1; i >= 0; i--) {
        reversedStr += inputStr[i];
    }
    return reversedStr;
}
 
int main() {
    std::string originalStr = "GeeksforGeeks";
    std::string result = reverseStringLoop(originalStr);
    std::cout << result << std::endl;
    return 0;
}

                    

C

#include <stdio.h>
#include <string.h>
 
void reverseStringLoop(char inputStr[]) {
    int length = strlen(inputStr);
    for (int i = length - 1; i >= 0; i--) {
        printf("%c", inputStr[i]);
    }
    printf("\n");
}
 
int main() {
    char originalStr[] = "GeeksforGeeks";
    reverseStringLoop(originalStr);
    return 0;
}

                    

Java

public class ReverseStringLoop {
    public static String reverseStringLoop(String inputStr) {
        StringBuilder reversedStr = new StringBuilder();
        for (int i = inputStr.length() - 1; i >= 0; i--) {
            reversedStr.append(inputStr.charAt(i));
        }
        return reversedStr.toString();
    }
 
    public static void main(String[] args) {
        String originalStr = "GeeksforGeeks";
        String result = reverseStringLoop(originalStr);
        System.out.println(result);
    }
}

                    

Python3

def reverse_string_loop(input_str):
    reversed_str = ""
    for char in input_str[::-1]:
        reversed_str += char
    return reversed_str
 
# Example usage:
original_str = "GeeksforGeeks"
result = reverse_string_loop(original_str)
print(result)

                    

C#

using System;
 
class Program {
    static string ReverseStringLoop(string inputStr) {
        char[] charArray = inputStr.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
 
    static void Main() {
        string originalStr = "GeeksforGeeks";
        string result = ReverseStringLoop(originalStr);
        Console.WriteLine(result);
    }
}

                    

Javascript

function reverseStringLoop(inputStr) {
    let reversedStr = "";
    for (let i = inputStr.length - 1; i >= 0; i--) {
        reversedStr += inputStr[i];
    }
    return reversedStr;
}
 
// Example usage:
let originalStr = "GeeksforGeeks";
let result = reverseStringLoop(originalStr);
console.log(result);

                    

Output
skeeGrofskeeG

Time Complexity: O(n)
Auxiliary Space: O(n) for storing the reversed string.

Reverse String using inbuilt method

  1. Use the inbuilt reverse() method available for strings.
  2. Convert the string to a list.
  3. Call the reverse() method on the list.
  4. Convert the list back to a string.

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 = "geeksforgeeks"; // 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 = "geeksforgeeks";//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 Code
if __name__ == '__main__':
    str = "geeksforgeeks" # 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 = "geeksforgeeks"; // 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 = "geeksforgeeks"; // Input string
str = str.split('').reverse().join(''); // Reverse the string
console.log(str);
 
// This code is contributed by Prajwal Kandekar

                    

Output
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).

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 i and n-i-1 are swapped, and i is incremented. This continues until i reaches n/2, and the string is completely reversed.

  1. Define a recursive function that takes a string as input.
  2. If the string is empty or has only one character, return the string as it is the base case.
  3. Otherwise, call the function recursively with the substring excluding the first character.
  4. Append the first character to the result of the recursive call.


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 string
void 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 program
int main()
{
    string str = "geeksforgeeks";
    recursiveReverse(str);
    cout << str;
    return 0;
}

                    

Java

// Recursive Java program to reverse a string
import java.io.*;
class GFG
{
 
  // Recursive function to reverse the string
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 void swap(char []arr, int i, int j)
{
    char temp= arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
}
 
// Driver program
public static void main(String[] args)
{
    char[] str = "geeksforgeeks".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 = "geeksforgeeks"
 
    # 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 string
using 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 program
public static void Main(String[] args)
{
    char[] str = "geeksforgeeks".ToCharArray();
    recursiveReverse(str,0);
    Console.WriteLine(String.Join("",str));
}
}
// This code is contributed by Princi Singh

                    

Javascript

// Recursive JavaScript function to reverse a string
function 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 = "geeksforgeeks";
    str = recursiveReverse(str);
    console.log(str);

                    

PHP

<?php
// A Simple PHP program
// to reverse a string
 
// Function to reverse a string
function reverseStr($str)
{
 
    // print the string
    // from last
    echo strrev($str);
}
 
// Driver Code
$str = "geeksforgeeks";
 
reverseStr($str);
 
// This code is contributed
// by Srathore
?>

                    

Output
skeegrofskeeg

Time Complexity: O(n) where n is length of string
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.

  1. Initialize two pointers, one at the beginning and the other at the end of the string.
  2. Swap the characters at the pointers.
  3. Move the left pointer to the right and the right pointer to the left.
  4. Repeat steps 2 and 3 until the pointers meet or cross each other.

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 string
void 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 program
int main()
{
    string str = "geeksforgeeks";
    reverseStr(str);
    cout << str;
    return 0;
}

                    

Java

//A Simple Iterative Java program to reverse
//a string
import 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 = "geeksforgeeks";
         reverseStr(str);
    }
}
// This code is contributed by Ita_c.

                    

Python3

# A Simple Iterative Python program to
# reverse a string
 
# Function to reverse a string
def 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 code
if __name__ == "__main__":
    str = "geeksforgeeks"
 
    # 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 = "geeksforgeeks";
        reverseStr(str);
    }
}
 
// This code is contributed by PrinciRaj1992

                    

Javascript

<script>
//A Simple Iterative Javascript program to reverse
//a string
 
//Function to reverse a string
function 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 program
let str = "geeksforgeeks";
reverseStr(str);
 
// This code is contributed by rag2127
</script>

                    

PHP

<?php
// A Simple Iterative PHP
// program to reverse a string
 
// Function to reverse a string
function 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 = "geeksforgeeks";
reverseStr($str);
echo $str;
 
// This code is contributed by ajit.
?>

                    

Output
skeegrofskeeg

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

String Reverse String using Stack:

  1. Initialize an empty stack.
  2. Push each character of the string onto the stack.
  3. Pop the characters from the stack and append them to a new string.
  4. The new string is the reversed version 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 program
int main()
{
  // Original String
    string str = "geeksforgeeks";
    reversebyStack(str);
    cout << str;
    return 0;
}

                    

Java

// Java program to reverse a string using stack
import 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 = "geeksforgeeks";
      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 = "geeksforgeeks"
 
    # 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 = "geeksforgeeks";
         
        // 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 stack
function 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 program
function main() {
    // Original String
    let str = "geeksforgeeks";
    let reversedStr = reverseByStack(str);
    console.log(reversedStr);
}
 
main();
 
 
// This code is contributed by shivamgupta0987654321

                    

Output
skeegrofskeeg

Time Complexity: O(n) 
Auxiliary Space: O(n)



Last Updated : 25 Jan, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads