题解中没看到用C++直接分割单词的方法,这里提供一种。可以用C++的字符流库<sstream>实现其他语言的split方法,以空格为分割点切分出单词存在vector中,然后逆序遍历vector即可。</sstream>

string ReverseSentence(string str) {
        string res="";
        if(str.length()==0) return str;
        vector<string> v;
        stringstream ss(str);
        while(getline(ss,str,' '))
            v.push_back(str);
        for(int i=v.size()-1;i>=0;i--){
            res+=v[i];
            if(i!=0||v[i]==""){
                res+=" ";
            }
        }
        return res;
    }

这里有一个坑,就是当输入的str是n个连续的空格时,返回结果总会少一个空格。后来发现原因是,字符流以空格为分隔符,导致vector中存的实际上都是空字符串,而逆序遍历vector时,只添加了n-1个空格。因此在for循环中的if语句中,加上v[i]==""的判断条件,即可修复此bug。