Thursday, March 6, 2014

151. Reverse Words in a String ---M

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

 

Example 1:

Input: "the sky is blue"
Output: "blue is sky the"

Example 2:

Input: "  hello world!  "
Output: "world! hello"
Explanation: Your reversed string should not contain leading or trailing spaces.

Example 3:

Input: "a good   example"
Output: "example good a"
Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.

 

Note:

  • A word is defined as a sequence of non-space characters.
  • Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.
  • You need to reduce multiple spaces between two words to a single space in the reversed string.

 

Follow up:

For C programmers, try to solve it in-place in O(1) extra space.

A:
思路很简单,就是用tokenizer之后
class Solution {
public:
    string reverseWords(string s) {
        istringstream iss(s);
        vector<string> res( ( istream_iterator<string>(iss)), istream_iterator<string>() );
        string sRes="";
        for(int i = res.size()-1; i>=0;i--)
            sRes += " "+res[i];
        if(sRes.length() >0)
            sRes = sRes.substr(1);
        return sRes;
    }
};



No comments:

Post a Comment