leetcode 151. Reverse Words in a String

来源:互联网 发布:ubuntu 断电无法启动 编辑:程序博客网 时间:2024/06/03 17:48

151. Reverse Words in a String

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

如果要求O(1)空间,那就只能是前后找第一个单词然后换位置。那就比较麻烦。

class Solution {public:    void reverseWords(string &s)    {        stack<string> words;        int k = 0;        while (k < s.size())        {            int length = 1;            if(s[k] != ' ')            {                while(1)                {                    if ( k + length < s.size() && s[k+length] != ' ')                        length++;                                    else                    {                        words.push(s.substr(k, length));                        break;                    }                }                k = k + length;            }            k++;        }        s = "";        while(!words.empty())        {            s += words.top() + " ";            words.pop();        }        s = s.substr(0, s.size() - 1);        return;    }};