# Leetcode Reverse-Words-In-a-String #### 2022-07-12 09:10 > ##### Algorithms: > > #algorithm #two_pointers > > ##### Data structures: > > #DS #string > > ##### Difficulty: > > #coding_problem #difficulty_easy > > ##### Additional tags: > > #leetcode > > ##### Revisions: > > N/A ##### Related topics: ##### Links: - [Link to problem](https://leetcode.com/problems/reverse-words-in-a-string-iii/) --- ### Problem Given a string `s`, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. #### Examples **Example 1:** **Input:** s = "Let's take LeetCode contest" **Output:** "s'teL ekat edoCteeL tsetnoc" **Example 2:** **Input:** s = "God Ding" **Output:** "doG gniD" #### Constraints - `1 <= s.length <= 5 * 104` - `s` contains printable **ASCII** characters. - `s` does not contain any leading or trailing spaces. - There is **at least one** word in `s`. - All the words in `s` are separated by a single space. ### Thoughts > [!summary] > This is a #two_pointers very easy and intuitive. ### Solution ```cpp class Solution { void reverse(string &s, int l, int r) { if (l >= r) { return; } swap(s[l++], s[r--]); reverse(s, l, r); } public: string reverseWords(string s) { int slow = 0, fast; for (int i = 0; i < s.size(); i++) { if (s[i] == ' ') { fast = i - 1; reverse(s, slow, fast); slow = i + 1; } } reverse(s, slow, s.size() - 1); return s; } }; ```