[leetcode] Reverse Words in a String

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".

Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
 
 1 class Solution
 2 {
 3 public:
 4   void reverseWords(string &s)
 5   {
 6     string temp = "", s1 = "";
 7     for(int i=s.size()-1; i>=0;)
 8     {
 9       if(s[i] == ' ' || i == 0) 
10       {
11         if(i == 0 && s.size()>0 && s[i+1] != ' ' && s[i] != ' ')
12           temp = s[i--] + temp;
13         else if(i == 0 && s[i] != ' ')
14           temp = s[i--];
15 
16         while(s[i] == ' ') i--;
17 
18         if(s1 == "")
19           s1 = temp;
20         else
21           s1 += " " + temp;
22 
23         temp = ""; 
24       }
25       else if(s[i] != ' ')
26         temp = s[i--] + temp;
27     }
28 
29     s = s1;
30   }
31 };
原文地址:https://www.cnblogs.com/lxd2502/p/4315656.html