Given an input string s, reverse the order of the words.
A word is defined as a sequence of non-space characters. The words in s will be separated by at least one space.
Return a string of the words in reverse order concatenated by a single space.
Note that s may contain leading or trailing spaces or multiple spaces between two words. The returned string should only have a single space separating the words. Do not include any extra spaces.
Example 1:
Input: s = "the sky is blue"
Output: "blue is sky the"
class Solution {
public:
string reverseWords(string s) {
reverse(s.begin(), s.end());
int n = s.size();
int strt = 0, end = 0;
int itrtr = 0;
while (itrtr < n) {
while (itrtr < n && s[itrtr] != ' ')
s[end++] = s[itrtr++];
if (strt < end) {
reverse(s.begin() + strt, s.begin() + end);
if (end == n) break;
s[end++] = ' ';
strt = end;
}
itrtr++;
}
if (end > 0 && s[end-1] == ' ') s.resize(end-1);
else s.resize(end);
return s;
}
};