[leetcode]Reverse Words in a String

leetcode新题,好久没更新了的感觉

class Solution {
public:
    void reverseWords(string &s) {
        vector<string> res;
        int i = 0;
        int len = s.size();
        //trim
        while(s[i] == ' ' && i < len) i++;
        while(s[len-1] == ' ' && i < len) len--;
        
        while(i < len) {
            int start = i;
            if(s[start] != ' ') {
                while(i < len && s[i] != ' ')i++;
                res.push_back(s.substr(start , i - start));
            } else {
                while(i < len && s[i] == ' ') i++;
                res.push_back(" ");
            }
        }
        reverse(res.begin() , res.end());
        s = "";
        for(auto const &x : res)
            s += x;
    }
};

就是一个简单的parser,把每个token放到vector里面,然后从后到前处理下就ok。

记得前后有空格是不算的。。所以要处理掉

多个空格按一个空格算。

原文地址:https://www.cnblogs.com/x1957/p/3590558.html