本来想使用网上将的比较多的,先将整个序列翻转之后,从前向后逐个翻转每个单词即可,后来想了一下,如果用一个栈将各个单词拆分后放进去,取出来自然就达到题目的要求,所以基于此实现如下:
class Solution { public: void reverseWords(string &s) { stack<string>tmp; int len=s.size(); if(len==0)return ; int l=-1,r=-1; for(int i=0;i<=len;i++){ if(i==len||s[i]==' '){ if(l<r){ tmp.push(s.substr(l+1,r-l)); } l=i; } else{ r=i; } } s=""; if(!tmp.empty()){ s=tmp.top(); tmp.pop(); } while(!tmp.empty()){ s+=" "+tmp.top(); tmp.pop(); } return; } };