LeetCode OJ-- Reverse Words in a String

https://oj.leetcode.com/problems/reverse-words-in-a-string/

给一个字符串 abc  dd  m,返回 m dd abc.

注意:输入中可能有前置或者后置空格,要求,都删除掉。输出的每个单词之间,空格大小为1.

class Solution {
public:
    void reverseWords(string &s) {
        if(s.empty())
            return;
        
        //remove heading and trailing spaces
        int i = 0;
        while(i<s.size() && s[i] == ' ')
            i++;
        if(i == s.size())
        {
            s = "";
            return;
        }
        int j = s.size() - 1;
        while(j>-1 && s[j] == ' ')
            j--;
        if(j == -1)
        {
            s = "";
            return;
        }
        
        s = s.substr(i,j - i + 1);
        
        size_t pos = 0;
        vector<string> strs;
        size_t begin = 0;
        while(begin < s.size())
        {
            pos = s.find_first_of(' ',begin);
            if(pos == begin)
            {
                begin++;
                continue;
            }
            else if(pos != -1)
                strs.push_back(s.substr(begin,pos - begin));
            else  //pos == -1, the end
            {
                strs.push_back(s.substr(begin,s.size() - 1 - begin + 1));
                break;
            }
            begin = pos + 1;
        }
        
        string ans;
        for(int i = strs.size() - 1; i > 0; i--)
        {
            ans += strs[i];
            ans += " ";
        }
        ans += strs[0];
        
        s = ans;
    }
};
原文地址:https://www.cnblogs.com/qingcheng/p/3829846.html