一、问题描述
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
二、思路
首先我们跳过字符前的空格,然后简单判断字符串是否都为空格,接着将当前字符串翻转,并且在翻转后加上空格;然后后如果空格数量大于0,则去掉末尾空格,最后我们将当前所有字符串翻转。
三、代码
class Solution {
public:
void reverseWords(string &s) {
int start = 0,blank = 0;
while(start < s.size()){
while(start < s.size() && s[start] == ' ') ++start;
if(start == s.size()) break;
int pre = start;
while(start < s.size() && s[start] != ' ') ++start;
for(int i = pre; i < start; ++i) s[blank++] = s[i];
reverse(s.begin() + blank - (start - pre), s.begin() + blank);
s[blank++] = ' ';
}
s.resize(blank > 0 ? blank - 1 : blank);
reverse(s.begin(),s.end());
}
};