Different Methods to Reverse a String in C++
The reversing of a string is nothing but simply substituting the last element of a string to the 1st position of the string.
Different Methods to Reverse a String in C++ are:
- Making our own reverse function
- Using ‘inbuilt’ reverse function
- Using Constructor
- Using a temp file
1. Making a Custom Reverse Function For Swapping Characters
- Using a first to last approach ‘for’ loop
CPP
// C++ program to reverse a string // using first to last approach // 'for' loop #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 for ( int i = 0; i < n / 2; i++) swap(str[i], str[n - i - 1]); } // Driver program int main() { string str = "geeksforgeeks" ; reverseStr(str); cout << str; return 0; } |
skeegrofskeeg
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
- Using a first to last Approach with while loop
C++
// C++ program to reverse a string // using while loop #include <bits/stdc++.h> using namespace std; // Function to reverse a string void reverseStr(string& str) { int len = str.length(); int n = len-1; int i = 0; while (i<=n){ //Using the swap method to switch values at each index swap(str[i],str[n]); n = n-1; i = i+1; } } // Driver program int main() { string str = "geeksforgeeks" ; reverseStr(str); cout << str; return 0; } |
skeegrofskeeg
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
- Using a Last to First Approach ‘for‘ Loop
C++
// C++ program to demonstrate reverse // of a string using Last to First // Approach 'for' Loop #include <bits/stdc++.h> using namespace std; // Function to reverse a string void reverse(string str) { for ( int i = str.length() - 1; i >= 0; i--) cout << str[i]; } // Driver code int main( void ) { string s = "GeeksforGeeks" ; reverse(s); return (0); } |
skeeGrofskeeG
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
- Using a Last to First Approach ‘while’ Loop
C++
// C++ program to demonstrate reverse // of a string using Last to First // Approach 'while' Loop #include <bits/stdc++.h> using namespace std; // Function to reverse a string void reverse(string str) { int len = str.length(); int n = len; while (n--) cout << str[n]; } // Driver code int main( void ) { string s = "GeeksforGeeks" ; reverse(s); return (0); } |
skeeGrofskeeG
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
1. Using recursion Function with two pointer approach
Recursion functions are used for iterating to different indexes of the string.
C++
// C++ program to reverse a string // using recursion #include <bits/stdc++.h> using namespace std; // Function to reverse a string void reverseStr(string& str, int n, int i) { if (n<=i){ return ;} // Swapping the character swap(str[i],str[n]); reverseStr(str,n-1,i+1); } // Driver program int main() { string str = "geeksforgeeks" ; reverseStr(str, str.length()-1, 0); cout << str; return 0; } |
skeegrofskeeg
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(N)
2. Using one pointer approach in recursion
Below is the implementation of the code:
C++
//C++ program to reverse a string using recursion #include <iostream> using namespace std; void getreverse(string &str, int i) { if (i > (str.length() - 1 - i)) { return ; } swap(str[i], str[str.length() - i - 1]); i++; getreverse(str, i); } int main() { string name = "geeksforgeeks" ; getreverse(name, 0); cout << name << endl; return 0; } //code contributed by pragatikohli |
skeegrofskeeg
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(N)
3. Using the inbuilt “reverse” Function
There is a direct function in the “algorithm” header file for doing reverse that saves our time when programming.
// Reverses elements in [begin, end] void reverse (BidirectionalIterator begin, BidirectionalIterator end);
CPP
// C++ program to illustrate the // reversing of a string using // reverse() function #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; } |
skeegrofskeeg
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
4. Reverse a String Using the Constructor
Passing reverse iterators to the constructor returns us a reversed string.
CPP
// C++ program to reverse // string using constructor #include <bits/stdc++.h> using namespace std; int main() { string str = "GeeksforGeeks" ; // Use of reverse iterators string rev = string(str.rbegin(), str.rend()); cout << rev << endl; return 0; } |
skeeGrofskeeG
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
5. Using a Temporary String
CPP
// C++ program to demonstrate // reversing of string // using temporary string #include <bits/stdc++.h> using namespace std; int main() { string str = "GeeksforGeeks" ; int n = str.length(); // Temporary string to store the reverse string rev; for ( int i = n - 1; i >= 0; i--) rev.push_back(str[i]); cout << rev << endl; return 0; } |
skeeGrofskeeG
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(1)
How could we get the reverse of a const string?
To get the reverse of a const string we have to first declare a ‘const string’ in a user-defined function following which we have declared then use the following algorithm for the calling of the desired objects.
“const reverseConstString = function(string) { return string.split("").reverse().join("")”
Example:
C++
// C++ program to get reverse of a const string #include <bits/stdc++.h> using namespace std; // Function to reverse string and return // reverse string pointer of that char * reverseConstString( char const * str) { // find length of string int n = strlen (str); // create a dynamic pointer char array char * rev = new char [n + 1]; // copy of string to ptr array strcpy (rev, str); // Swap character starting from two // corners for ( int i = 0, j = n - 1; i < j; i++, j--) swap(rev[i], rev[j]); // return pointer of the reversed string return rev; } // Driver code int main( void ) { const char * s = "GeeksforGeeks" ; printf ( "%s" , reverseConstString(s)); return (0); } |
skeeGrofskeeG
Time Complexity: O(N)
Auxiliary Space: O(N)
Using Stack Data Structure
C++
// C++ Program to reverse a string #include <bits/stdc++.h> using namespace std; int main() { string s = "GeeksforGeeks" ; stack< char > st; for ( char x : s) st.push(x); while (!st.empty()) { cout << st.top(); st.pop(); } return 0; } |
skeeGrofskeeG
Complexity Analysis:
Time Complexity: O(N)
Auxiliary Space: O(N)
This article is contributed by Priyam kakati, Ranju Kumari, Somesh Awasthi. If you like GeeksforGeeks and would like to contribute, you can also write an article at write.geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.
Please Login to comment...