# [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)$ :::