// Leecode反转字符串问题,先用istringstream将字符串提取出来,然后加上空格,放到string里面
// 有点类似将ip地址以.的形式间隔提取出来,放在vector中进行分析

class Solution {
public:
    // 1. 对于空格的处理,还有缺陷,并且复杂度方面较差
    // 2. 对于istringstream is(s)什么时候结合getline的‘.’做,什么时候直接is >> temp,还没弄清楚
    // string reverseWords(string s) {
    //     if (s.size() == 0) return s;
    //     istringstream is(s);
    //     string st;
    //     vector<string> vec;
    //     while(is >> st) {
    //         vec.push_back(st);
    //     }
    //     reverse(vec.begin(), vec.end());
    //     string res;
    //     for (int i = 0; i < vec.size() - 1; i++) {
    //         res += vec[i] + " ";
    //     }
    //     res += vec[vec.size() - 1];
    //     return res;
    // }
    string reverseWords(string s) {
        stack<string> st;
        istringstream is(s);
        string temp;
        string res;
        while(is >> temp) {
            st.push(temp);
            st.push(" ");
        }
        if (!st.empty()) st.pop();
        while (!st.empty()) {
            res += st.top();
            st.pop();
        }
        return res;
    }
};