Reverse Words in a Given String in Python
Last Updated :
06 Jan, 2025
Improve
In this article, we explore various ways to reverse the words in a string using Python. From simple built-in methods to advanced techniques like recursion and stacks. We are going to see various techniques to reverse a string.
Using split()
and join()
Using split() and join() is the most common method to reverse the words in a string.
# Input string
s = "Geeks for Geeks"
# Split the string into words, reverse the list of words, and join them back
reversed_words = ' '.join(s.split()[::-1])
print(reversed_words)
Output
Geeks for Geeks
Explanation:
- The
split()
method splits the string into a list of words. [::-1]
reverses the list of words.join()
combines the reversed words back into a single string.
Using a Loop
We can manually reverse the words using a loop.
s = "Geeks for Geeks"
# Split the string into words
words = s.split()
# Initialize an empty string to store the result
reversed_words = ""
# Iterate through the words in reverse order
for word in reversed(words):
reversed_words += word + " "
# Strip the trailing space
reversed_words = reversed_words.strip()
print(reversed_words)
Output
Geeks for Geeks
Explanation:
- Split the string into words, then use a loop to traverse the words in reverse order.
- Append each word to a new string, adding a space after each word.
Using a Stack
A stack can be used to reverse the order of words.
# Input string
s = "Geeks for Geeks"
# Split the string into words
words = s.split()
# Reverse the words using a stack
stack = []
for word in words:
stack.append(word)
reversed_words = ""
while stack:
reversed_words += stack.pop() + " "
# Strip the trailing space
reversed_words = reversed_words.strip()
# Output the result
print(reversed_words)
Output
Geeks for Geeks
Explanation:
- Words are pushed onto a stack (a Last-In-First-Out structure).
- Popping words from the stack reverses their order.
Using Recursion
A recursive approach can also reverse the words.
s = "Geeks for Geeks"
# Recursive function to reverse words
def reverse_words(words):
if not words:
return ""
return words[-1] + " " + reverse_words(words[:-1])
# Split the string and call the recursive function
reversed_words = reverse_words(s.split()).strip()
print(reversed_words)
Output
Geeks for Geeks
Explanation:
- The function takes the list of words, returns the last word, and recursively processes the remaining words.