不用栈这么麻烦,用好string的加法就行了。逐个遍历该字符串,如果不为空,就将tmp加上该字符。如果为空,证明一个单词结束了,将res 加上空格加上tmp加上res,因为这个后加的tmp其实是在前面的,而且它前面一定有空格,记得清空tmp。遍历完后,判断tmp是否为空,因为遍历到最后一个单词,最后一位可能是空格也可能不是,如果是空格,那么就在循环里搞定了,如果不是,那么最后的tmp还没加上,通过tmp的长度判断,如果不为0,就res = tmp + res。最后返回res。
用栈可能还过不了,毕竟这些空格什么的太傻了
class Solution {
public:
string ReverseSentence(string str) {
if(str.length() == 0) return "";
string res = "",tmp = "";
for(int i = 0; i < str.length(); ++i){
if(str[i] != ' '){
tmp += str[i];
}
else{
res = " " + tmp + res;
tmp.clear();
}
}
if(tmp.length() != 0) res = tmp + res;
return res;
}
};