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 string void 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 function int main() { string str = "Geeks for Geeks" ; reverseWords(str); return 0; } |
C#
// C# program to reverse individual // words in a given string using STL list using System; using System.Collections.Generic; class GFG { // reverses individual words // of a string public 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 Code public static void Main( string [] args) { string str = "Geeks for Geeks" ; reverseWords(str); } } // This code is contributed // by Shrikant13 |
Java
// Java program to reverse individual // words in a given string using STL list import 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 string def 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 Code if __name__ = = "__main__" : string = "Geeks for Geeks" reverseWords(string) # This code is contributed by # sanjeev2552 |
Javascript
// JS program to reverse individual words in a given // string using STL list // reverses individual words of a string function 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) { console.log(st[0]); st.shift(); } } } // Since there may not be space after // last word. while (st.length != 0) { console.log(st[0]); st.shift(); } } // Driver program to test function let str = "Geeks for Geeks" ; reverseWords(str); // This code is contributed by adityamaharshi21 |
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#
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 = "GeeksforGeeks is good to learn" ; printWords(s); } } // ksam24000 |
CPP
#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 code int main() { string s = "GeeksforGeeks 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 = "GeeksforGeeks 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 code if __name__ = = '__main__' : s = "GeeksforGeeks is good to learn" print_words(s) |
skeeGrofskeeG si doog ot nrael
Time complexity : O(n)
Auxiliary Space : O(n)
Using Java 8 Streams:
Implementation:
Java
import java.util.Arrays; import java.util.stream.Collectors; // This code is contributed by Mayank Sharma 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 = Arrays.asList(str.split( " " )) .stream() .map(s -> new StringBuilder(s).reverse()) .collect(Collectors.joining( " " )); System.out.println(result); } } |
Python3
# python code import re def reverseIndividual( str ): words = re.findall(r '\b\w+\b' , str ) result = " " .join(word[:: - 1 ] for word in words) return result str = "Welcome to GFG" print (reverseIndividual( str )) #code by ksam24000 |
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 |
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); } } |
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 string def 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 code if __name__ = = "__main__" : string = "Geeks for Geeks" print (make_reverse(string)) # This code is contributed by Shivam Tiwari |
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 a stack and push all the characters of the given input string.
- Create ‘rev’ and ‘temp’ strings
- Do the following steps till the stack becomes empty.
- If the peek( ) of the stack is a character, append it to temp.
- If the peek( ) of the stack is a space, then append space to rev and also temp to rev
- Finally, if the temp is not empty, append the temp to rev in the front
- Return the reversed string.
Implementation:
Java
// Java program to reverse the individual words import 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)); } } // This method is contributed by Likhita AVL |
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_sentence if __name__ = = "__main__" : input = 'geeks quiz practice code' print (rev_sentence( input )) |
skeeg ziuq ecitcarp edoc
Time Complexity: O(n)
Auxiliary Space:: O(n)
Method: Using join and split functions
Implementation:
Python3
# Python code to reverse words s = " Geeks for Geeks" l = [] # splitting the string s = s.split() for i in s: # reversing each word l.append(i[:: - 1 ]) # printing string using join # function after reversing the # words print ( " " .join(l)) |
skeeG rof skeeG
Time Complexity: O(n)
Auxiliary Space: O(n)
Please Login to comment...