Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
click to show clarification.
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string
#include <iostream> #include <string> #include <algorithm> #include <sstream> #include <vector> using namespace std; void reverseWords(string &s){ string buf; stringstream ss(s); vector<string> tokens; while (ss >> buf) tokens.push_back(buf); if (tokens.size() == 0) s=""; else{ int n = tokens.size()-1; s = tokens[n]; for (int i = n-1; i >=0; -- i) s+=" "+tokens[i]; } } int main(){ string s = "the sky is blue"; reverseWords(s); cout<<s<<endl; }