Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
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 "stdafx.h" #include <string> #include <iostream> using namespace std; class Solution{ public: void reverseWords(string &s) { string revese, tmp; int k = 0; while (s[k] == ' ') //ignore the leading spaces { k++; } for (int i = k; i < s.size();) { if (s[i] != ' ') { tmp += s[i++]; } else { while (s[i] == ' ') // reduce the spaces to a single space i++; if (i == s.size()) break; revese = " " + tmp + revese; tmp = ""; } } s = tmp + revese; }; }; int _tmain(int argc, _TCHAR* argv[]) { Solution *sln = new Solution(); string s = " hello dd "; sln->reverseWords(s); cout << s << endl; return 0; }