Reverse in place:

1. reverse the whole sentence.

2. reverse every word.

We cant do it for I, because there are extra spaces in sentence.

 1 class Solution {
 2 public:
 3     void reverse(string &s, int start, int end) {
 4         while (start < end) {
 5             [](char &a, char &b) {char c = a; a = b; b = c;}(s[start++], s[end--]);
 6         }
 7     }
 8     void reverseWords(string &s) {
 9         int len = s.size(), index = 0;
10         reverse(s, 0, len-1);
11         for (int i = 0; i < len; i++) {
12             if (s[i] == ' ') {
13                 reverse(s, index, i-1);
14                 index = i+1;
15             }
16         }
17         reverse(s, index, len-1);
18     }
19 };

 

posted on 2015-03-23 10:20  keepshuatishuati  阅读(119)  评论(0编辑  收藏  举报