class Solution { public: int getFirstLetter(string &s,int start) { int i; for(i = start;i < s.length();i++) { if(s[i] != ' ')return i; } return i; } int getFirstBlank(string &s,int start) { int i; for(i = start;i < s.length();i++) { if(s[i] == ' ')return i; } return i; } void reverseWords(string &s) { vector<string> splits; splits.clear(); int i = 0; while(i < s.length()) { i = getFirstLetter(s,i); if(i >= s.length())break; int next = getFirstBlank(s,i+1); if(next >= s.length()) { next = s.length()-1; splits.push_back(s.substr(i,next-i+1)); break; } splits.push_back(s.substr(i,next-i)); i = next; } s = ""; for(int i = splits.size()-1;i >= 0;i--) { s += splits[i]; if(i != 0)s += " "; } } };