logologo
  • AI Interviewer
  • Features
  • AI Tools
  • FAQs
  • Jobs
logologo

Transform your hiring process with AI-powered interviews. Screen candidates faster and make better hiring decisions.

Useful Links

  • Contact Us
  • Privacy Policy
  • Terms & Conditions
  • Refund & Cancellation
  • About Us

Resources

  • Certifications
  • Topics
  • Collections
  • Articles
  • Services

AI Tools

  • AI Interviewer
  • Xperto AI
  • AI Pre-Screening

Procodebase © 2025. All rights reserved.

Level Up Your Skills with Xperto-AI

A multi-AI agent platform that helps you level up your development skills and ace your interview preparation to secure your dream job.

Launch Xperto-AI

Reversing Words in a String

author
Generated by
Anushka Agrawal

15/11/2024

datastructures

Sign in to read full article

When tackling strings in programming, one enduring challenge is reversing the words in a string – that is, turning the order of the words upside down while keeping the words themselves unchanged. For instance, transforming "Hello World" into "World Hello" may seem straightforward, but there are multiple ways to achieve this, each with its pros and cons. Let’s dive in!

Understanding the Problem

At first glance, reversing words might simply mean changing their arrangement. However, we need to account for the spacing between words, potential trailing or leading spaces, and ensuring the words themselves do not get altered.

Example Input and Output

  • Input: " Hello World "
  • Output: "World Hello"

In this case, notice how we maintain only a single space between the reversed words and trim any leading or trailing spaces.

Approach 1: Using Built-in Functions

A straightforward approach to solve this problem is to utilize built-in string methods available in languages like Python.

Implementation Steps:

  1. Split the String: Use the split() method to divide the string into words. By default, this will handle multiple spaces for us.
  2. Reverse the List: Employ slicing to reverse the list of words.
  3. Join the Words: Use the join() method to concatenate the reversed list into a single string.

Sample Code:

def reverse_words_simple(s): return ' '.join(s.split()[::-1]) # Test the function input_string = " Hello World " output_string = reverse_words_simple(input_string) print(output_string) # Output: "World Hello"

Pros and Cons

  • Pros:

    • Very readable and easy to implement.
    • Takes care of multiple spaces effectively.
  • Cons:

    • The time complexity is O(n) as it traverses the string multiple times.
    • It utilizes extra space, which may not be ideal for memory-constrained environments.

Approach 2: Manual Reversal Using Two Pointers

If you're looking to avoid built-in functions, the two-pointer technique offers a great alternative. This method iterates through the string while manipulating the characters directly.

Implementation Steps:

  1. Trim the String: Create a pointer for the start and another for the end of the string.
  2. Reverse the Whole String: First, reverse the entire string.
  3. Reverse Individual Words: Iterate through the reversed string and reverse each word back to its original orientation.

Sample Code:

def reverse_words_two_pointers(s): # Step 1: Trim the string s = s.strip() char_list = list(s) # Step 2: Reverse the entire string char_list.reverse() # Step 3: Reverse individual words start = 0 for end in range(len(char_list)): if char_list[end] == ' ': # Reverse the current word reverse_word(char_list, start, end - 1) start = end + 1 # Reverse the last word reverse_word(char_list, start, len(char_list) - 1) # Step 4: Build the result string return ''.join(char_list).strip() def reverse_word(char_list, left, right): while left < right: char_list[left], char_list[right] = char_list[right], char_list[left] left += 1 right -= 1 # Test the function input_string = " Hello World " output_string = reverse_words_two_pointers(input_string) print(output_string) # Output: "World Hello"

Pros and Cons

  • Pros:

    • Does not use additional space to store words.
    • Efficient for longer strings with less overhead.
  • Cons:

    • More complex and less intuitive than using built-in functions.
    • Handling edge cases (like punctuation) requires additional care.

Approach 3: Stack-Based Approach

Using a stack is another intriguing method where we exploit the Last In First Out (LIFO) property to achieve the reversal.

Implementation Steps:

  1. Push Words onto Stack: Traverse the input string, push each word onto the stack.
  2. Pop from Stack: Once all the words are in, pop them off to construct the reversed string.

Sample Code:

def reverse_words_stack(s): stack = [] word = [] # Push words to the stack for char in s: if char != ' ': word.append(char) else: if word: stack.append(''.join(word)) word = [] if word: stack.append(''.join(word)) # Build the reversed string result = [] while stack: result.append(stack.pop()) return ' '.join(result) # Test the function input_string = " Hello World " output_string = reverse_words_stack(input_string) print(output_string) # Output: "World Hello"

Pros and Cons

  • Pros:

    • Intuitive for those familiar with stack operations.
    • Handles words separated by varying spaces naturally.
  • Cons:

    • Slightly less efficient in terms of time due to multiple iterations.
    • The stack data structure adds some overhead.

By exploring these various methods, you gain a nuanced understanding of how to tackle the problem of reversing words in a string. Each approach carries its own set of trade-offs regarding readability, efficiency, and complexity, so consider the context in which you'll apply them.

Popular Tags

datastructuresalgorithmsstrings

Share now!

Like & Bookmark!

Related Collections

  • Advanced Dynamic Programming Interview Questions

    15/11/2024 | DSA

  • Mastering Bit Manipulation: Unlocking Binary Power

    08/12/2024 | DSA

  • Advanced Priority Queue and Heap Interview Questions in Java

    16/11/2024 | DSA

  • Advanced String-based Interview Techniques

    15/11/2024 | DSA

  • Top 20 DSA Interview Questions Mastery

    23/09/2024 | DSA

Related Articles

  • Sorting Arrays with Custom Comparison Functions in DSA

    06/12/2024 | DSA

  • Isolating the Rightmost Set Bit

    08/12/2024 | DSA

  • Mastering the Art of Reversing a Linked List

    23/09/2024 | DSA

  • Anagram Grouping

    15/11/2024 | DSA

  • Mastering Heaps and Priority Queues

    23/09/2024 | DSA

  • Understanding Lowest Common Ancestor in Binary Trees

    13/10/2024 | DSA

  • Understanding Array Boundaries and Out-of-Bounds Errors

    06/12/2024 | DSA

Popular Category

  • Python
  • Generative AI
  • Machine Learning
  • ReactJS
  • System Design