题目链接
思路分析
题目要求
- 首先要去掉头尾空格
- 如果在我们去除头尾空格之后,要对当前的字符串进行判断,排除掉全为空格的情况
- 在去掉头尾空格之后,我们使用一个**vector< string>**来存储我们处理好的字符串,然后我们开始遍历字符串,去掉中间多余的空格,当遇到空格时,我们就将前面的字符串存储起来,最终进行反转,就能得到结果
代码实现
class Solution {
public:
string reverseWords(string s) {
//先去除前后多余空格
int start = 0;
for(; start < s.size(); ++start)
{
if(s[start] != ' ')
break;
}
int end = s.size()-1;
for(; end >= 0; --end)
{
if(s[end] != ' ')
break;
}
if(end - start < 0)
return "";
vector<string> str;
for(int i = start; i <= end; ++i)
{
string str1 = "";
while(i <= end && s[i] != ' ')
str1 += s[i++];
if(str1.size() != 0)
str.push_back(str1);
}
string ret = "";
for(int i = str.size()-1; i > 0; --i)
{
ret += str[i] + ' ';
}
ret += str[0];
return ret;
}
};