# [151\. Reverse Words in a String](https://leetcode.com/problems/reverse-words-in-a-string/)
:::spoiler
```cpp=
class Solution {
public:
string reverseWords(string s)
{
// Create a stringstream object to help with splitting the string
// Clear the input string to reuse it for the result
// Variable to store each word
// Loop through each word separated by spaces in the stringstream
while()
{
// Skip empty tokens (extra spaces)
// If this is the first word added to the result string
// Initialize the result string with the first word
// For subsequent words
// Prepend the word to the result string
}
// Return the result string with words reversed
}
};
```
:::
:::spoiler Solution - Use >>
```cpp=
class Solution {
public:
string reverseWords(string s)
{
stringstream ss(s);
string token;
s = "";
while (ss >> token)
{
s = token + ' ' + s;
}
return s.substr(0, s.size() - 1);
}
};
```
- T: $O(N)$
- S: $O(N)$
:::
:::spoiler Solution - Use >>
```cpp=
class Solution {
public:
string reverseWords(string s)
{
stringstream ss(s);
s = "";
string token;
while(is >> token)
{
s = (s.empty() ? token : token + " " + s);
}
return s;
}
};
```
- T: $O(N)$
- S: $O(N)$
:::
:::spoiler Solution - Use getline
```cpp=
class Solution {
public:
string reverseWords(string s)
{
stringstream ss(s);
s = "";
string token;
while(getline(ss, token, ' '))
{
if(token.empty()) continue;
if(s.empty())
{
s = token;
}
else
{
s = token + ' ' + s;
}
}
return s;
}
};
```
- T: $O(N)$
- S: $O(N)$
:::