Reverse individual words

Given string str, we need to print the reverse of individual words.
Examples:
Input : Hello World
Output : olleH dlroW
Input : Geeks for Geeks
Output : skeeG rof skeeG
Method 1 (Simple): Generate all words separated by space. One by one reverse word and print them separated by space.
Method 2 (Space Efficient): We use a stack to push all words before space. As soon as we encounter a space, we empty the stack.
Implementation:
C++
// C++ program to reverse individual words in a given// string using STL list#include <bits/stdc++.h>using namespace std;// reverses individual words of a stringvoid reverseWords(string str){ stack<char> st; // Traverse given string and push all characters // to stack until we see a space. for (int i = 0; i < str.length(); ++i) { if (str[i] != ' ') st.push(str[i]); // When we see a space, we print contents // of stack. else { while (st.empty() == false) { cout << st.top(); st.pop(); } cout << " "; } } // Since there may not be space after // last word. while (st.empty() == false) { cout << st.top(); st.pop(); }}// Driver program to test functionint main(){ string str = "Geeks for Geeks"; reverseWords(str); return 0;} |
Java
// Java program to reverse individual// words in a given string using STL listimport java.io.*;import java.util.*;class GFG { // reverses individual words of a string static void reverseWords(String str) { Stack<Character> st = new Stack<Character>(); // Traverse given string and push all // characters to stack until we see a space. for (int i = 0; i < str.length(); ++i) { if (str.charAt(i) != ' ') st.push(str.charAt(i)); // When we see a space, we print // contents of stack. else { while (st.empty() == false) { System.out.print(st.pop()); } System.out.print(" "); } } // Since there may not be space after // last word. while (st.empty() == false) { System.out.print(st.pop()); } } // Driver program to test above function public static void main(String[] args) { String str = "Geeks for Geeks"; reverseWords(str); }} |
Python3
# Python3 program to reverse individual words# in a given string using STL list# reverses individual words of a stringdef reverseWords(string): st = list() # Traverse given string and push all characters # to stack until we see a space. for i in range(len(string)): if string[i] != " ": st.append(string[i]) # When we see a space, we print # contents of stack. else: while len(st) > 0: print(st[-1], end="") st.pop() print(end=" ") # Since there may not be space after # last word. while len(st) > 0: print(st[-1], end="") st.pop()# Driver Codeif __name__ == "__main__": string = "Geeks for Geeks" reverseWords(string)# This code is contributed by# sanjeev2552 |
C#
// C# program to reverse individual// words in a given string using STL listusing System;using System.Collections.Generic;class GFG{// reverses individual words// of a stringpublic static void reverseWords(string str){ Stack<char> st = new Stack<char>(); // Traverse given string and push // all characters to stack until // we see a space. for (int i = 0; i < str.Length; ++i) { if (str[i] != ' ') { st.Push(str[i]); } // When we see a space, we // print contents of stack. else { while (st.Count > 0) { Console.Write(st.Pop()); } Console.Write(" "); } } // Since there may not be // space after last word. while (st.Count > 0) { Console.Write(st.Pop()); }}// Driver Codepublic static void Main(string[] args){ string str = "Geeks for Geeks"; reverseWords(str);}}// This code is contributed// by Shrikant13 |
Javascript
// JS program to reverse individual words in a given// string using STL list// reverses individual words of a stringfunction reverseWords(str) { let st = []; // Traverse given string and push all characters // to stack until we see a space. for (let i = 0; i < str.length; ++i) { if (str[i] != ' ') st.unshift(str[i]); // When we see a space, we print contents // of stack. else { while (st.length != 0) { process.stdout.write(st[0]); st.shift(); } process.stdout.write(' '); } } // Since there may not be space after // last word. while (st.length != 0) { process.stdout.write(st[0]); st.shift(); }}// Driver program to test functionlet str = "Geeks for Geeks";reverseWords(str);// This code is contributed by adityamaharshi21 |
Output
skeeG rof skeeG
Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n), where n is the length of the string
Python | Reverse each word in a sentence
Using stringstream in C++ :
Implementation:
C++
#include <bits/stdc++.h>using namespace std;void printWords(string str){ // word variable to store word string word; // making a string stream stringstream iss(str); // Read and print each word. while (iss >> word) { reverse(word.begin(), word.end()); cout << word << " "; }}// Driver codeint main(){ string s = "zambiatek is good to learn"; printWords(s); return 0;}// This code is contributed by Nikhil Rawat |
Java
import java.io.*;import java.lang.*;import java.util.*;class Main { public static void printWords(String str) { // word variable to store word String word; // making a string stream StringTokenizer iss = new StringTokenizer(str); // Read and print each word. while (iss.hasMoreTokens()) { word = iss.nextToken(); System.out.print( new StringBuilder(word).reverse().toString() + " "); } } public static void main(String[] args) throws java.lang.Exception { String s = "zambiatek is good to learn"; printWords(s); }}// Contributed by rishabmalhdijo |
Python3
def print_words(s): # word variable to store word word = "" # making a string stream iss = s.split() # Read and print each word. for i in iss: word = i[::-1] print(word, end=" ")# Driver codeif __name__ == '__main__': s = "zambiatek is good to learn" print_words(s) |
C#
using System;using System.Linq;using System.Collections.Generic;using System.Text;using System.IO;public class GFG { static void printWords(string str) { // word variable to store word string word; // making a string stream using(var iss = new StringReader(str)) { string line; while ((line = iss.ReadLine()) != null) { // Read and print each word. foreach(string w in line.Split(' ')) { word = new string(w.Reverse().ToArray()); Console.Write(word + " "); } } } } // Driver code static void Main() { string s = "zambiatek is good to learn"; printWords(s); }}// ksam24000 |
Javascript
function printWords(str) { // word variable to store word let word; // making a string stream let lines = str.split("\n"); for (let i = 0; i < lines.length; i++) { let words = lines[i].split(" "); for (let j = 0; j < words.length; j++) { word = words[j].split("").reverse().join(""); process.stdout.write(word + " "); } }}// Driver Codelet s = "zambiatek is good to learn";printWords(s); |
Output
skeeGrofskeeG si doog ot nrael
Time complexity : O(n)
Auxiliary Space : O(n)
Using Java 8 Streams:
Implementation:
C++
#include <bits/stdc++.h>using namespace std;int main() {string str = "Welcome to GFG"; string result = ""; // Splitting the string based on space istringstream ss(str); vector<string> words; do { string word; ss >> word; words.push_back(word); } while (ss); // Reverse each part and then join for (int i = 0; i < words.size() - 1; i++) { reverse(words[i].begin(), words[i].end()); result += words[i] + ' '; } reverse(words.back().begin(), words.back().end()); result += words.back(); cout << result << endl; return 0;}//This code is contributed by Shivam Tiwari |
Java
import java.util.Arrays;import java.util.stream.Collectors;// This code is contributed by Mayank Sharmapublic class reverseIndividual { public static void main(String[] args) { String str = "Welcome to GFG"; // Splitting the string based on space and reverse each part // and then join String result = Arrays.asList(str.split(" ")) .stream() .map(s -> new StringBuilder(s).reverse()) .collect(Collectors.joining(" ")); System.out.println(result); }} |
Python3
# python codeimport redef reverseIndividual(str): words = re.findall(r'\b\w+\b', str) result = " ".join(word[::-1] for word in words) return resultstr = "Welcome to GFG"print(reverseIndividual(str))#code by ksam24000 |
C#
using System;using System.Linq;public class ReverseIndividual{ public static void Main(string[] args) { string str = "Welcome to GFG"; // Splitting the string based on space and reverse each part // and then join string result = string.Join(" ", str.Split(' ') .Select(word => new string(word.Reverse().ToArray()))); Console.WriteLine(result); }} |
Javascript
function reverseIndividualWords(str) { // Split the string based on space const words = str.split(' '); // Reverse each word and join them back with space const reversedWords = words.map(word => word.split('').reverse().join('')); // Join the reversed words to form the final result const result = reversedWords.join(' '); return result;}const str = 'Welcome to GFG';const reversedStr = reverseIndividualWords(str);console.log(reversedStr); |
Output
emocleW ot GFG
Time complexity : O(n)
Auxiliary Space: O(n)
Way 3: Using StringBuffer Class.
Approach:
- O(n) First, convert the string object into a StringBuffer object.
- By using the reverse method of the StringBuffer class reverse the string.
- Now, store the reverse sequence in a String array.
- Run a loop that will create a new String by using these reverse words
- Finally, return the new string.
Implementation:
C++
#include <algorithm>#include <iostream>#include <sstream>#include <string>std::string makeReverse(std::string str){ std::reverse(str.begin(), str.end()); std::istringstream iss(str); std::string word; std::string reverse; while (iss >> word) { reverse = word + " " + reverse; } return reverse;}int main(){ std::string str = "Geeks for Geeks"; std::cout << makeReverse(str) << std::endl; return 0;} |
Java
/*package whatever //do not write package name here */import java.io.*;class GFG { static String makeReverse(String str) { StringBuffer s = new StringBuffer(str); str = s.reverse().toString(); String[] rev = str.split(" "); StringBuffer reverse = new StringBuffer(); for (int i = rev.length - 1; i >= 0; i--) { reverse.append(rev[i]).append(" "); } return reverse.toString(); } public static void main(String[] args) { String str = "Geeks for Geeks"; System.out.println(makeReverse(str)); }}// This code is contributed by Adarsh Kumar |
Python3
# Function to make the reverse of the stringdef make_reverse(string: str) -> str: # Reversing the string string = string[::-1] # Splitting the string by space rev = string.split(" ") # Reversing the list of words rev = rev[::-1] # Joining the words to form a new string reversed_string = " ".join(rev) return reversed_string# Driver codeif __name__ == "__main__": string = "Geeks for Geeks" print(make_reverse(string))# This code is contributed by Shivam Tiwari |
C#
using System;class GFG { static string MakeReverse(string str) { char[] charArray = str.ToCharArray(); Array.Reverse(charArray); str = new string(charArray); string[] rev = str.Split(' '); Array.Reverse(rev); return string.Join(" ", rev); } public static void Main() { string str = "Geeks for Geeks"; Console.WriteLine(MakeReverse(str)); }} |
Javascript
// Javascript code additionfunction makeReverse(string) {// Reversing the stringstring = string.split("").reverse().join("");// Splitting the string by spacelet rev = string.split(" ");// Reversing the list of wordsrev = rev.reverse();// Joining the words to form a new stringlet reversedString = rev.join(" ");return reversedString;}// Driver codelet string = "Geeks for Geeks";console.log(makeReverse(string));// The code is contributed by Nidhi goel. |
Output
skeeG rof skeeG
Time complexity : O(n)
Auxiliary Space : O(n)
Way 4 :
Approach: To store the reversed string instead of just printing
Steps:
- Create an empty stack to hold characters from the input string. Create two empty strings: ‘rev’ (for the reversed string) and ‘temp’ (for temporary storage).
- Iterate through each character in the input string.
- If the current character is a letter (an alphabet character) Add it to the ‘temp’ string to form a word .
- If the current character is a space Append a space to the ‘rev’ string to separate words. Append the content of ‘temp’ (a word) to ‘rev’. Clear ‘temp’ to prepare for the next word.
- After processing all characters. If ‘temp’ is not empty then add the content of ‘temp’ to the beginning of the ‘rev’ string.
- Finally, return the ‘rev’ string.
C++
#include <iostream>#include <stack>class Reverse {public: // function to reverse the individual words std::string reverse(std::string str) { // create a stack to access the string from end std::stack<char> s; // push all the characters of the stack for (int i = 0; i < str.length(); i++) s.push(str[i]); // rev string to store the required output std::string rev = ""; std::string temp = ""; // till the stack becomes empty while (!s.empty()) { // if top of the stack is a letter, // then append it to temp; if (isalpha(s.top())) temp += s.top(); // if it is a space, then append space to rev // and also temp to rev else { rev = " " + temp + rev; // make the temp empty temp = ""; } s.pop(); } // if temp is not empty, add temp to rev at the front if (!temp.empty()) rev = temp + rev; // return the output string return rev; }};int main() { std::string str = "Geeks for Geeks"; Reverse obj; std::cout << obj.reverse(str) << std::endl; return 0;}// Siddhesh |
Java
// Java program to reverse the individual wordsimport java.util.Stack;public class Reverse { // function to reverse the individual words String reverse(String str) { // create a stack to access the string from end Stack<Character> s = new Stack<>(); // push all the characters of the stack for (int i = 0; i < str.length(); i++) s.push(str.charAt(i)); // rev string to store the required output String rev = ""; String temp = ""; // till the stack becomes empty while (!s.isEmpty()) { // if top of the stack is a letter, // then append it to temp; if (Character.isLetter(s.peek())) temp = temp + s.pop(); // if it is a space, the append space to rev // and also temp to rev else { rev = " " + temp + rev; // make the temp empty temp = ""; s.pop(); } } // if temp is not empty, add temp to rev at the // front if (temp != "") rev = temp + rev; // return the output string return rev; } public static void main(String[] args) { String str = "Geeks for Geeks"; Reverse obj = new Reverse(); System.out.println(obj.reverse(str)); }} |
Python3
class Reverse: # function to reverse the individual words def reverse(self, string): # create a stack to access the string from end stack = [] # push all the characters of the string onto the stack for i in range(len(string)): stack.append(string[i]) # rev string to store the required output rev = "" temp = "" # till the stack becomes empty while len(stack) > 0: # if top of the stack is a letter, then append it to temp if stack[-1].isalpha(): temp = temp + stack.pop() # if it is a space, append space to rev and also temp to rev else: rev = " " + temp + rev # make the temp empty temp = "" stack.pop() # if temp is not empty, add temp to rev at the front if temp != "": rev = temp + rev # return the output string return rev# main driver functionif __name__ == '__main__': str = "Geeks for Geeks" obj = Reverse() print(obj.reverse(str)) |
C#
using System;using System.Collections.Generic;class Reverse{ // Renamed the method to ReverseWords public string ReverseWords(string str) { // create a stack to access the string from end Stack<char> stack = new Stack<char>(); // push all the characters onto the stack for (int i = 0; i < str.Length; i++) { stack.Push(str[i]); } // rev string to store the required output string rev = ""; string temp = ""; // until the stack becomes empty while (stack.Count > 0) { // if the top of the stack is a letter, // then append it to temp; if (char.IsLetter(stack.Peek())) { temp += stack.Pop(); } // if it is a space, then append space to rev // and also temp to rev else { rev = " " + temp + rev; // make the temp empty temp = ""; stack.Pop(); } } // if temp is not empty, add temp to rev at the front if (!string.IsNullOrEmpty(temp)) { rev = temp + rev; } // return the output string return rev; }}class Program{ static void Main() { string str = "Geeks for Geeks"; Reverse obj = new Reverse(); Console.WriteLine(obj.ReverseWords(str)); // Pause execution to see the result Console.ReadLine(); }}// contributed Siddhesh |
Javascript
class Reverse { // function to reverse the individual words reverse(str) { // create an array (stack) to access the string from end const stack = []; // push all the characters onto the stack for (let i = 0; i < str.length; i++) { stack.push(str.charAt(i)); } // rev string to store the required output let rev = ''; let temp = ''; // until the stack becomes empty while (stack.length > 0) { // if top of the stack is a letter, // then append it to temp; if (/[a-zA-Z]/.test(stack[stack.length - 1])) { temp += stack.pop(); } // if it is a space, then append space to rev // and also temp to rev else { rev = ' ' + temp + rev; // make the temp empty temp = ''; stack.pop(); } } // if temp is not empty, add temp to rev at the front if (temp !== '') { rev = temp + rev; } // return the output string return rev; }}// Testing the Reverse classconst str = 'Geeks for Geeks';const obj = new Reverse();console.log(obj.reverse(str)); |
skeeG rof skeeG
Time Complexity : O(N)
Auxiliary Space : O(N) for using stack .
Using Split and iterator in Python
Implementation:
Python3
def rev_sentence(sentence): # first split the string into words words = sentence.split(' ') reverse_sentence = "" for i in words: reverse_sentence += i[::-1]+' ' # then reverse the split string list and join using space # finally return the joined string return reverse_sentenceif __name__ == "__main__": input = 'zambiatek quiz practice code' print(rev_sentence(input)) |
Output
skeeg ziuq ecitcarp edoc
Time Complexity: O(n)
Auxiliary Space:: O(n)
Method: Using join and split functions
Implementation:
Python3
# Python code to reverse wordss = " Geeks for Geeks"l = []# splitting the strings = s.split()for i in s: # reversing each word l.append(i[::-1])# printing string using join# function after reversing the# wordsprint(" ".join(l)) |
Output
skeeG rof skeeG
Time Complexity: O(n)
Auxiliary Space: O(n)
Solve DSA problems on GfG Practice.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



