Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Reverse string without using any temporary variable

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

 


My Personal Notes arrow_drop_up
Last Updated : 07 Jul, 2022
Like Article
Save Article
Similar Reads
Related Tutorials