Leetcode 151 Solution

This article provides solution to leetcode question 151 (reverse-words-in-a-string)

https://leetcode.com/problems/reverse-words-in-a-string

Solution

class Solution {
public:
    void reverseWords(string &s) {
        int i = 0;

        while (true)
        {
            auto end = s.find_first_of(' ', i);

            if (end == string::npos)
            {
                reverse(&s[i], &s[s.size()]);
                break;
            }
            else
            {
                reverse(&s[i], &s[end]);
                i = end + 1;
            }
        }

        reverse(s.begin(), s.end());

        int l = 0;
        for (int i = 0; i < s.size(); i++)
        {
            if (i == 0 && s[i] == ' ')
                continue;
            if (i > 0 && s[i - 1] == ' ' && s[i] == ' ')
                continue;

            s[l++] = s[i];
        }

        if (l > 0 && s[l - 1] == ' ')
            l--;

        s[l] = 0;
    }
};