Medium Difficulty
Reverse Words in a String

String

Tow Pointers

medium

## Reverse Words in a String

To solve the problem of reversing the order of words in a string, we can split the string into an array of words using the space character as a delimiter. We then reverse the array and join the words back together with a single space separator.

Here's an implementation of the algorithm:

``````function reverseWords(s) {
// Remove leading and trailing spaces, and reduce multiple spaces to a single space
s = s.trim().replace(/\s+/g, " ");

// Split the string into an array of words
const words = s.split(" ");

// Reverse the array of words and join them with a single space separator
return words.reverse().join(" ");
}``````

In this solution, we first remove any leading and trailing spaces from the input string `s` using the `trim` method. We then replace any multiple spaces with a single space using a regular expression.

Next, we split the modified string into an array of words using the `split` method with the space character as the delimiter.

We then reverse the array of words using the `reverse` method and join them back together into a string using the `join` method with a single space as the separator.

Finally, we return the resulting reversed string of words.

Here's an example usage of the `reverseWords` function:

``````console.log(reverseWords("the sky is blue")); // Output: "blue is sky the"
console.log(reverseWords("  hello world  ")); // Output: "world hello"
console.log(reverseWords("a good   example")); // Output: "example good a"``````

The time complexity of this algorithm is O(n), where n is the length of the input string `s`. The operations of trimming, replacing, splitting, reversing, and joining all take linear time.

The space complexity is O(n) as well. The array of words will have a length proportional to the input string length, and the reversed string will also have the same length.