https://oj.leetcode.com/problems/reverse-words-in-a-string/
给一个字符串 abc dd m,返回 m dd abc.
注意:输入中可能有前置或者后置空格,要求,都删除掉。输出的每个单词之间,空格大小为1.
class Solution { public: void reverseWords(string &s) { if(s.empty()) return; //remove heading and trailing spaces int i = 0; while(i<s.size() && s[i] == ' ') i++; if(i == s.size()) { s = ""; return; } int j = s.size() - 1; while(j>-1 && s[j] == ' ') j--; if(j == -1) { s = ""; return; } s = s.substr(i,j - i + 1); size_t pos = 0; vector<string> strs; size_t begin = 0; while(begin < s.size()) { pos = s.find_first_of(' ',begin); if(pos == begin) { begin++; continue; } else if(pos != -1) strs.push_back(s.substr(begin,pos - begin)); else //pos == -1, the end { strs.push_back(s.substr(begin,s.size() - 1 - begin + 1)); break; } begin = pos + 1; } string ans; for(int i = strs.size() - 1; i > 0; i--) { ans += strs[i]; ans += " "; } ans += strs[0]; s = ans; } };