53. leetcode557. Reverse Words in a String III

557. Reverse Words in a String III

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

思路:可以利用栈,注意边界的处理。

class Solution {
public:
    string reverseWords(string s) {
        int length = s.length();
        string result(length, '\0');
        stack<char> stk;
        int m = 0;
        for (int i = 0;i<length;i++)
        {
            if (s[i] != ' ')
            {
                stk.push(s[i]);
            }
            if (s[i] == ' ' || i==length-1)
            {
                while (!stk.empty())
                {
                    char e = stk.top();
                    result[m] = e;
                    stk.pop();
                    ++m;
                }
                if(i!=length-1)
                {
                    result[m] = ' ';
                    ++m;
                }
            }
        }
        return result;
    }
};

 

posted @ 2017-04-13 22:03  蓦然闻声  阅读(149)  评论(0编辑  收藏  举报