Open In App
Related Articles

Reverse string without using any temporary variable

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

We are given a string. We are also given indexes of first and last characters in string. The task is to reverse the string without using any extra variable.

Examples: 

Input  : str = "abc"
Output : str = "cba" 

Input :  str = "GeeksforGeeks"
Output : str = "skeeGrofskeeG"

If we take a look at program to reverse a string or array, all we need to do is swap two characters. The idea is to use XOR for swapping the variable. Below is the implementation of the idea.  

C++

// C++ Program to reverse a string without
// using temp variable
#include <bits/stdc++.h>
using namespace std;
  
// Function to reverse string and return reversed string
string reversingString(string str, int start, int end)
{
    // Iterate loop upto start not equal to end
    while (start < end)
    {
        // XOR for swapping the variable
        str[start] ^= str[end];
        str[end] ^= str[start];
        str[start] ^= str[end];
  
        ++start;
        --end;
    }
    return str;
}
  
// Driver Code
int main()
{
    string s = "GeeksforGeeks";
    cout << reversingString(s, 0, 12);
    return 0;
}

                    

Java

// Java Program to reverse a string without
// using temp variable
import java.util.*;
  
class GFG 
{
  
// Function to reverse string and
// return reversed string
static String reversingString(char []str,
                               int start, 
                               int end)
{
    // Iterate loop upto start not equal to end
    while (start < end)
    {
        // XOR for swapping the variable
        str[start] ^= str[end];
        str[end] ^= str[start];
        str[start] ^= str[end];
  
        ++start;
        --end;
    }
    return String.valueOf(str);
}
  
// Driver Code
public static void main(String[] args) 
{
    String s = "GeeksforGeeks";
    System.out.println(reversingString
                      (s.toCharArray(), 0, 12));
}
}
  
// This code is contributed by 29AjayKumar

                    

Python3

# Python3 Program to reverse a string 
# without using temp variable
  
# Function to reverse string and 
# return reversed string
def reversingString(str, start, end):
      
    # Iterate loop upto start not equal to end
    while (start < end):
  
        # XOR for swapping the variable
        str = (str[:start] + chr(ord(str[start]) ^ 
                                 ord(str[end])) + 
                                 str[start + 1:]);
        str = (str[:end] + chr(ord(str[start]) ^ 
                               ord(str[end])) + 
                               str[end + 1:]);
        str = (str[:start] + chr(ord(str[start]) ^ 
                                 ord(str[end])) + 
                                 str[start + 1:]);
  
        start += 1;
        end -= 1;
    return str;
  
# Driver Code
s = "GeeksforGeeks";
print(reversingString(s, 0, 12));
  
# This code is contributed by 29AjayKumar

                    

C#

// C# Program to reverse a string without
// using temp variable
using System;
      
class GFG 
{
  
// Function to reverse string and
// return reversed string
static String reversingString(char []str,
                              int start, 
                              int end)
{
    // Iterate loop upto start 
    // not equal to end
    while (start < end)
    {
        // XOR for swapping the variable
        str[start] ^= str[end];
        str[end] ^= str[start];
        str[start] ^= str[end];
  
        ++start;
        --end;
    }
    return String.Join("", str);
}
  
// Driver Code
public static void Main(String[] args) 
{
    String s = "GeeksforGeeks";
    Console.WriteLine(reversingString
                     (s.ToCharArray(), 0, 12));
}
}
  
// This code is contributed by 29AjayKumar

                    

Javascript

<script>
  
// Javascript program to reverse a string
// without using temp variable
  
// Function to reverse string and
// return reversed string
function reversingString(str, start, end)
{
      
    // Iterate loop upto start not
    // equal to end
    while (start < end)
    {
          
        // XOR for swapping the variable
        str[start] = String.fromCharCode(
            str[start].charCodeAt(0) ^ 
            str[end].charCodeAt(0));
        str[end] = String.fromCharCode(
            str[end].charCodeAt(0) ^ 
            str[start].charCodeAt(0));
        str[start] = String.fromCharCode(
            str[start].charCodeAt(0) ^ 
            str[end].charCodeAt(0));
              
        ++start;
        --end;
    }
    return(str).join("");
}
  
// Driver Code
let s = "GeeksforGeeks";
document.write(reversingString(
    s.split(""), 0, 12));
  
// This code is contributed by rag2127
  
</script>

                    

Output: 

skeeGrofskeeG

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


If we are allowed to library function, we can also use the idea discussed in quickly reverse a string in C++. We don’t even need indexes of first and last characters. 

C++

// Reversing a string using reverse()
#include<bits/stdc++.h>
using namespace std;
  
int main()
{
   string str = "geeksforgeeks";
      
   // Reverse str[begin..end]
   reverse(str.begin(), str.end());
      
   cout << str;
   return 0;
}

                    

Java

// Reversing a string using reverse()
class GFG 
{
public static void main(String[] args)
{
    StringBuilder str = new StringBuilder("geeksforgeeks");
      
    // Reverse str[begin..end]
    str.reverse();
    System.out.println(str);
}
}
  
// This code is contributed 
// by PrinciRaj1992

                    

Python3

# Reversing a string using reverse()
str = "geeksforgeeks";
      
# Reverse str[begin..end]
str = "".join(reversed(str))
      
print(str);
  
# This code is contributed by 29AjayKumar

                    

C#

// Reversing a string using reverse()
using System;
using System.Linq;                 
  
class GFG 
{
public static void Main(String[] args)
{
    String str = "geeksforgeeks";
      
    // Reverse str[begin..end]
    str = new string(str.Reverse().ToArray());
    Console.WriteLine(str);
}
}
  
// This code is contributed by 29AjayKumar

                    

Javascript

<script>
  
// Reversing a string using reverse()
  
    function reverseString(str) {
        return str.split("").reverse().join("");
    }
  
        var str = ("geeksforgeeks");
  
      
        document.write(reverseString(str));
  
// This code is contributed by todaysgaurav
  
</script>

                    

Output: 

skeegrofskeeg

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


This article is contributed by Aarti_Rathi and Mr. Somesh Awasthi.

 


 



Last Updated : 07 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads