Leetcode151. Reverse Words in a String翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例:  

输入: "the sky is blue", 输出: "blue is sky the".

说明:

  • 无空格字符构成一个单词。
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

class Solution {
public:
    void reverseWords(string &s) 
    {
        int len = s.size();
        string str = "";
        vector<string> strs;
        for(int i = 0; i < len; i++)
        {
            if(i == len - 1 && s[i] != ' ')
                str += s[i];
            if(i == len - 1 || s[i] == ' ')
            {
                if(str == "")
                    continue;
                strs.push_back(str);
                str = "";
            }
            else
            {
                str += s[i];
            }
        }
        string res = "";
        for(int i = strs.size() - 1; i >= 0; i--)
        {
            if(i != strs.size() - 1)
                res += " ";
            res += strs[i];
        }
        s = res;
    }
};
原文地址:https://www.cnblogs.com/lMonster81/p/10433830.html