思路
我直接用了双端队列, 效果一样, 就是效率会低点
以空格或结束为结束标识 将每个单词放进栈中
最后一个单词要另外考虑
栈中依次弹出,添加到新字符串
最后删除最后一个空格
C++代码
class Solution {
public:
string reverseWords(string s) {
deque<string> q;
int n = s.length();
int l = 0, r = 0;
for(int i = 0; i < n; i++)
{
if(s[i] == ' ')
{
string c = s.substr(l, r);
q.push_back(c);
r = 0;
l = i + 1;
}
else r++;
}
string c = s.substr(l, r);
q.push_back(c);
string s1;
while(q.size())
{
s1 += q.back();
q.pop_back();
s1.push_back(' ');
}
s1.erase(n, 1);
return s1;
}
};