151. Reverse Words in a String - cocoder39/coco39_LC GitHub Wiki

151. Reverse Words in a String

void reverseWords(string &s) {
        int len = s.length();
        int start = 0;
        for (int i = 0; i < len; i++) {
            if (s[i] != ' ') {
                if (start != 0) s[start++] = ' ';
                
                int j = i;
                for (; j < len && s[j] != ' '; j++) {
                    s[j - i + start] = s[j];
                }
                reverse(s.begin() + start, s.begin() + (j - i + start));
                start += j - i;
                i = j;
            }
        }
        s.resize(start);
        reverse(s.begin(), s.end());
    }