// 解法一:
class Solution {
public:
string reverseWords(string s) {
string res;
int sz=s.size();
for(int i=0;i<sz;i++){
string tmp="";
// 忽略所有空格,只存储单词
while(i<sz && !isblank(s[i])){
tmp+=s[i++];
}
if(!tmp.empty()){
if(!res.empty())
tmp+=" ";
res=tmp+res;
}
}
return res;
}
};
// 解法二:
class Solution {
public:
string reverseWords(string s){
int l=s.size()-1,r=s.size()-1;
string ans="";
while(l>=0){
while(l>=0 && s[l]!=' ')
l--;
string tmp=s.substr(l+1,r-(l+1)+1);
if(tmp.size()>0){
// 加入第一个字符后开始加空格
if(!ans.empty())
ans+=' ';
ans+=tmp;
}
// 找到第一个非空格后让right指向它作为单词的右边界
l--;
r=l;
}
return ans;
}
};